Sqlserver,Mysql基礎SQL陳述句
SqlServer
建表
CREATE TABLE [IF NOT EXISTS] 表名 (
欄位名 列型別 [屬性] ,
欄位名 列型別 [屬性] ,
.......
欄位名 列型別 [屬性]
) ;
CREATE TABLE visits (
visit_id INT PRIMARY KEY IDENTITY (1, 1),--主鍵列,從1開始自增
first_name VARCHAR (50) NOT NULL,--不允許為空,最多可存盤50個字符
last_name VARCHAR (50) NOT NULL,
visited_at DATETIME,--允許為空
phone VARCHAR(20),
store_id INT NOT NULL,
);
修改欄位默認值
##已存在默認值
exec sp_helpconstraint @objname=表名 --(查看指定表相關約束詳情)
alter table 表名 drop constraint 約束名 --(洗掉默認值)
alter table 表名 add default 默認值 for --欄位名
##無默認值
alter table 表名 add default 默認值 for 欄位名
修改表名
sp_rename tablename,newtablename
修改欄位名
sp_rename 'tablename.colname',newcolname,'column'
添加欄位
alter table table_name add new_column data_type [interality_codition]
例子
##添加nvarchar型別的列,默認值為null
alter table student add studentName nvarchar(250) default null
##添加int型別的列,默認值為0,主鍵
alter table student add studentId int primary key default 0
##判斷student中是否存在name欄位且洗掉欄位
if exists(select * from syscolumns where id=object_id('student') and name='name')
begin
alter table student DROP COLUMN name
end
更改欄位
##格式:alter table table_name alter column column_name data_type
ALTER TABLE student ALTER COLUMN name VARCHAR(200)
洗掉欄位
##欄位存在相關約束
exec sp_helpconstraint @objname=表名 --(查看指定表相關約束詳情)
alter table 表名 drop constraint 約束名 --(洗掉相關約束)
alter table 表名 drop cloumn 欄位名 --(洗掉欄位)
##無相關約束
alter table 表名 drop cloumn 欄位名
添加表注釋
COMMENT ON table 表 IS '表注釋';
添加欄位注釋
COMMENT on column 表.欄位 is '欄位注釋';
資料排序
方法一 ROW_NUMBER() OVER()
--pageIndex 表示指定頁
--pageSize 表示每頁顯示的條數
SELECT * FROM
(SELECT ROW_NUMBER() OVER(ORDER BY 排序欄位) AS RowId,* FROM 表名 ) AS r
WHERE RowId BETWEEN ((pageIndex-1)*pageSize + 1) AND (pageIndex * PageSize)
方式二 offset fetch next
注意:這是比較推薦的寫法,EF生成的sql陳述句也是這樣的,但是必須記住rows和末尾的only 不要寫漏掉了,并且這種方式必須要接著Order by XX 使用,不然會報錯,如果沒有排序的欄位可以使用(select 1);
--pageIndex 表示指定頁
--pageSize 表示每頁顯示的條數
--排序欄位 可以用(select 1)代替
SELECT * FROM 表名 ORDER BY 排序欄位 offset ((pageIndex - 1) * pageSize) ROWS FETCH NEXT pageSize ROWS ONLY
方式三 top not in
--pageIndex 表示指定頁
--pageSize 表示每頁顯示的條數
SELECT TOP pageSize menuId, *
FROM sys_menu
WHERE menuId NOT IN (SELECT TOP ((pageSize-1)*pageIndex) menuId FROM sys_menu)
方式四 通過以欄位排序的方式top條數進行分頁
--pageIndex 表示指定頁
--pageSize 表示每頁顯示的條數
SELECT * FROM(
SELECT TOP pageSize * FROM(
SELECT TOP ((pageIndex - 1) * pageSize +(pageSize*2)) * FROM sys_menu ORDER BY menuId ASC)
AS TEMP1 ORDER BY menuId DESC)
AS TEMP2 ORDER BY menuId ASC
mysql
建表
CREATE TABLE [IF NOT EXISTS] 表名 (
欄位名 列型別 [屬性] [索引] [注釋],
欄位名 列型別 [屬性] [索引] [注釋],
.......
欄位名 列型別 [屬性] [索引] [注釋]
) [表型別] [字符集設定] [注釋]
注意:[IF NOT EXISTS]建議添加,添加了后如果表名存在會提示警告資訊,而不是報錯,
CREATE TABLE IF NOT EXIST 'student'(
id INT(4) PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '學號', --comment注釋,default默認
name VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
pwd VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密碼',
sex VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性別',
birthday DATETIME DEFAULT NULL COMMENT '出生日期',
address VARCHAR (100) DEFAULT NULL COMMENT '家庭地址',
email VARCHAR(50) DEFAULT NULL COMMENT '電子郵箱'
) COMMENT '學生表'
修改表名
ALTER TABLE teacher RENAME AS allteacher
洗掉表
DROP TABLE if EXISTS teacher1 --洗掉表,如果表存在,
添加表欄位
ALTER TABLE allteacher ADD age INT(11)
修改欄位型別
##語法:ALTER TABLE 表名 MODIFY [COLUMN] 欄位名 新資料型別 新型別長度 新默認值 新注釋;-- COLUMN關鍵字可以省略不寫
alter table table1 modify column column1 decimal(10,1) DEFAULT NULL COMMENT '注釋';
alter table table1 modify column1 decimal(10,2) DEFAULT NULL COMMENT '注釋';
修改欄位名
##語法: ALTER TABLE 表名 CHANGE [column] 舊欄位名 新欄位名 新資料型別;
-- 正常,此時欄位名稱沒有改變,能修改欄位型別、型別長度、默認值、注釋
Alter table table1 change column1 column1 varchar(100) DEFAULT 1.2 COMMENT '注釋';
-- 正常,能修改欄位名、欄位型別、型別長度、默認值、注釋
alter table table1 change column1 column2 decimal(10,1) DEFAULT NULL COMMENT '注釋'
洗掉表欄位
ALTER TABLE teacher1 DROP age1
修改表注釋
ALTER TABLE 表名 COMMENT '新注釋'
對資料的常用命令
##查詢資料
select distinct 列…. From 表名;--去重
select concat(列1,列2) from 表名;--拼接結果
select * from 表名 where 條件 order by 列 [asc/desc] --結果排序 升序:asc 降序:desc
##插入資料
insert into 表名(欄位1,欄位2) values(值1,值2),(值1,值2); --插入多條資料【MYSQL】
insert into 表名(欄位) select 欄位 from 表2; --查詢結果插入
insert into 表名 select 欄位 from 表2; --查詢結果,全表插入
資料排序
limit
--m 去掉的條數
--n 回傳條數
select * from table order by id limit m, n;
Sqlserver和MySql的區別
| Sqlserver | Mysql | |
|---|---|---|
| 埠 | 1433 | 3306 |
| 自動增長 | identity(1,1) | auto increment |
| 字串拼接 | + | concat() |
| 空值數量函式 | isnull() | ifnull() |
| 自增長列的插入 | 可以不為自動增長列插入值 | 需要為自動增長列插入值 |
| 日期格式化 | convert(varchar(8),getdate(),112) | data_format(xcs_received_date,'%Y%m%d') |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/541323.html
標籤:其他
