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的区别
SqlserverMysql端口14333306自动增长identity(1,1)auto increment字符串拼接+concat()空值数量函数isnull()ifnull()自增长列的插入可以不为自动增长列插入值需要为自动增长列插入值日期格式化convert(varchar(8),getdate(),112)data_format(xcs_received_date,'%Y%m%d')
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |