建表:
Set sql_mode=’strict_trans_tables’; 存储引擎启用严格模式,非法数据值被拒绝
Create table t3(id int(4) primary key auto_increment,sname char(4)); 设置id自动增长
Create table t3(id int(4) primary key auto_increment,sname char(4))auto_increment=100; id从100开始自动增长
Alter table t3 auto_increment=200; 修改已存在的表,id从200开始
Set @@auto_increment_increment = 5; 所有自动增长的每次增长5
Delete from t3; 删除t3表中的内容,id自增会延续之前的数字继续增长
Truncate t3; 截断表,此时id自增长从1开始
Create table t3(id int(4) primary key auto_increment,gender char(4) default’匿名’); 性别默认匿名
Create table t3(id int(4) primary key auto_increment comment ‘t3表的主键’,,gender char(4) default’匿名’ comment ‘性别’) comment=‘用户表’; 表列类型注释
1、create able 表名(…)engine = myisam
2、create able 表名(…)engine = innodb 为表设置引擎,两种方式
Create database db character set gbk collate gbk_chinese_ci; 改变字符集类型为gbk,且校验规则为…
Set names gbk; 设置当前客户端的字符集
Create table 表名(…)charset = utf8; 创建时设置字符集
修改数据表:
Alter table 旧表名 rename as 新表名; 修改表名
Alter table 表名 add 字段名 列类型【属性】; 增加字段
Alter table 表名 modify 字段名 列类型【属性】; 修改字段
Alter table 表名 change 旧字段名 新字段名 列类型【属性】 修改字段名和内容
Alter table 表名 drop 字段名; 删除字段
Alter table 表名 add constraint 主键名 primary key(字段名); 添加主键
Alter table 表名 add constraint 外键名 foreign key(多的一方字段名) 表名(一的一方的主键字段名); 添加外键
Alter table 表名drop primary key; 删除主键
删除表:
Drop table[if exists] 表名; 删除表
Truncate命令:
用于完全清空表数据,但表结构、索引、约束等不变。 Truncate [table] table_name
与delete命令的异同:
相同:都能删除数据、不删除表结构、但truncate速度更快
不同:使用truncate table 重新设置auto_increment计数器
使用truncate table不会对事务有影响
事务的ACID原则:
原子性、一致性、隔离性、持久性
DQL语言:数据查询语句
Distinct关键字
去掉select查询返回的结果中重复的记录,只返回一条
语法:select distinct 字段名1,字段名2…from 表名
Select version(); 查询版本号
Select @@auto_increment_increment; 查询步长
转义符:
Select * from student were studentname like ‘%:%%’ escape ‘:’;将冒号当做转义符,使用escape
内连接查询:可省略inner关键字
Select 字段1,字段2,… from table_1 inner join table_2 on table_1.字段x=table_2.字段y
左外连接:left join
Select 字段1,字段2,… from table_1 left[outer] join table_2 on table_1.字段x=table_2.字段y
Mysql的limit:
Select * from ‘表名’ limit 5; 返回前5条记录
Select * from ‘表名’ limit 5,10; 返回从第6条记录起的10条记录
Group by的用法:常与having结合使用
Select count(r.studentNo) ‘总条数’,max(r.studentresult) ‘最高分’, min(r.studentresult) ‘最低分’,avg(r.studentresult) ‘平均分’,r.subjectNo from result r group by r.subjectNo having avg(r.studentresult)>=60; 按照不同的课程分组,分别算出其平均分、最高分和最低分,对于低于60分平均分的不予显示
注意:只有作为分组条件出现的列,以及聚合函数计算结果可以放在select后面
索引:
主键索引:create table ‘表名’(‘gradeid’ int(11) auto_increment primary key,或primary key(‘gradeid’))
唯一索引:create table ‘grade’(‘gradeid’ int(11) auto_increment primary key,’gradename’ varchar(32) not null unique 或unique key ‘gradeid’(‘gradeid’))
注:Unique key 后面的为给索引取的名字,括号里的是列名
常规索引(index):create table ‘result’(…index/key ‘ind’(‘studentNo’,’subjectNo’)) 创建时添加
Alter table ‘result’ add index ‘ind’ (‘studentNo’,’subjectNo’); 创建后追加
例:create table test(
A int primary key,B char(5) unique,C int,D int,
Key ‘index_cd’ (‘c’,’d’),
或 Index ‘index_c’(‘c’)
#primary key(‘a’) #unique key ‘index_b’ (‘b’)
)注:联合索引前后要求:哪个条件筛选后留下的数据量最少哪个在前
全文索引:create table ‘student’(…fulltext(‘studentName’)engine=myisam);
Alter table employee add fulltext(‘first_name’)
注:用于快速定位特定数据,还能用于myisam类型的数据表、只能用于char、varchar、text数据列类型、适合大型数据集
Select * from test where match(‘studentNmae’) against(‘key’); 查询test表,使用全文索引对studenname进行索引,针对key这个关键字检索
删除索引:
Drop index 索引名 on 表名
Alter table 表名 drop index 索引名
Alter table 表名 drop primary key
查看索引:
Show index(或keys) from 表名
备份:
Msqldump客户端:在bin目录下找,进入后输入:
Mysqldump -h 主机名 -u 用户名 -p [options] 数据库名 [table 1 table2 table3] >path/filename.sql
例如:备份bdqn数据库:cmd进入dos窗口,输入:
mysqldump -u root -p bdqn bdqn category users > d:/sqlbk.sql
Mysqldump常用选项:
Mysqldump -help 查看基本参数
--add-drop-table 导出sql脚本会加上drop table if exists语句,默认是打开的,可以用
--skip-add-drop-table取消
例:Mysqldump -uroot -pbdqn –-skip-add-drop-table bdqn category users >d:sqlbk.sql
--add-locks 会在insert语句中捆绑一个lock table和unlock table语句
好处:防止记录被再次导入时,其他用户对表进行的操作,默认是打开的
-t或--no-create-info 纯数据备份,没有创建表格语句
例:Mysqldump -uroot -pbdqn –-no-create-info bdqn category users >d:sqlbk.sql
-c或--complete-insert 在每个inseert语句的列上加上字段名,在数据库导入另一个数据库时有用
例:Mysqldump -uroot -pbdqn –c bdqn category users >d:sqlbk.sql
-d或—no-data 只转存表结构,不存数据
--where ’where-condition’或-w’ where-condition’ 只转储给定的where条件选择的记录
例:Mysqldump -uroot -pbdqn –-where ‘studentNo=1’ bdqn student>d:sqlbk.sql
恢复数据库:
方法一:用source方法 source /path/db_name.sql
注:/path/是一个绝对路径,并且必须是mysql运行用户有权限读取的文件,source在mysql命令行里执行
例:mysql -uroot -pbdqn;
Use test;
source d:sqlbk.sql
方法二:用mysql客户端 mysql-u root -p dbname< /path/db_name.sql;
例:mysql -uroot -pbdqn test <d:sqlbk.sql
我总结的常用SQL语句
发表于:2017-08-08
作者:网络转载
来源:
 相关文章
PostgreSQL开发与部署实战:打造高效... MySQL性能飞跃:揭秘高效数据库优化的... MySQL数据库性能优化中常用的方法是什么? MySQL安全最佳实践指南(2024版) MySQL面试大揭秘:你不得不掌握的十大... 只有1%的人知道的MySQL性能优化,却能...- 周排行
- 月排行
-   区块链共识机制分析——论PoW,PoS,D...
-   SQL 性能调优优秀实践
-   MySQL安全最佳实践指南(2024版)
-   企业在什么情况下有引入分布式数据库...
-   如何解决Redis缓存雪崩、缓存穿透、缓...
-   异构数据库迁移的九个大坑怎么躲开
-   MySQL分库分表全攻略:从小白到大神的...
-   区块链共识机制分析——论PoW,PoS,D...
-   数据库:评估安全风险4个要点
-   G 行 EverDB 自动化混沌测试之路
-   为什么你的数据库需要单元测试
-   SQL 性能调优优秀实践
-   系统请求1次10s,我被客户爆骂,一怒...
-   为什么越来越多的人选择PostgreSQL,...