MySQL语句基础大纲

1.create database 数据库名; //创建数据库并以默认的字符集和校对规则进行设置
    (1).默认数据库字符集为utf8
    (2).字符集校对规则:
    utf8_bin区分大小写
    utf8_general_ci不区分大小写(默认)


2.create database 数据库名 character set 字符集名称 collate 字符集校对规则名; //自定义某部分字符集和校对规则创建数据库


3.drop database 数据库名; //删除数据库


4.show databases; //查询有哪些数据库(注意database有s)


5.show create database 数据库名; //查看数据库创建时候用的语句


6.mysqldump -u 用户名 -p密码 -B 数据库名1 数据库名2... > 文件名.sql; //只能备份数据库(因为后面有语句可以进行其他方式备份)


7.source 文件名.sql; //恢复数据库(文件中其实就是数据库的一些语句,所以今天直接打开复制,运行语句)


8.mysqldump -u 用户名 -p密码 数据库名 表1 表2... > 文件名.sql; //可以自定义备份表和数据库(表1,表2得在数据库名中)


9.create table 表名(列名1 数据类型,列名2 数据类型);//默认是以数据库的数据类型为列的数据类型,快速创建表


10.create table 表名(列名1 数据类型,列名2 数据类型) character set 字符集名 collate 校对名 engine 引擎名;//详细自定义某部分创建表


11.insert into 表名 values(值1,值2...); //在表中添加值,值的顺序为列的顺序


12.rename table 表名 to 新表名字; //修改表名


13.alter table 表名 add 列名 数据类型 not null default "这里填入默认的内容,也就是为空的时候的内容" after 参考列名;//添加一个不能为空的数据类型的列名并设置在参考列的后面


14.alter table 表名 drop 列名;//删除表中的列


15.alter table 表名 modify 列名 数据类型 not null default "这里为默认的内容"; //修改表中的列信息


16.desc 表名; //查看表的所有列的信息


17.alter table 表名 change 列名 新列名 数据类型 not null default "这里为默认的内容"; //修改表中的列的信息


18.alter table 表名 character set 字符集名; //修改表的字符集


19.insert into 表名 (列1,列2,列3......) values(值1,值2,值3.....);//自定义添加顺序值,不写值会自动添加null(前提是not null default没有设置)


20.update 表名 set 列名 = 修改值; //修改所有列名所有值设置为修改值(那一列全设置为指定值)


21.update 表名 set 列名1 = 修改值 where 列名2=搜索值; //可以指定位置修改,把在列名2中搜索值的列名1的值修改为修改值(以搜索值那一行中的一列设置为指定值)


22.update 表名 set 列名1=修改值1,列名2=修改值2 where 列名2=搜索值;//指定位置修改多个值(以搜索值那一行中的多列设置为指定值)


23.delete from 表名 where 列名=搜索值;//删除指定的值(以搜索值的那一行删除)


24.delete from 表名; //删除表中的全部数据(也就是全部修改为null)


25.select 列1,列2.. from 表名; //显示表中的列1和列2的数据


26.select distinct 列1,列2.. from 表名;//显示表中的列1和列2并去除重复的一行


27.select * from 表名; //显示出这个表中的所有列的数据


28.select 列1,(列的表达式) as 别名 from 表名; //显示列1和列的表达式,列的表达式,如果求和:列1+列2+列3,别名是方便方便记忆


29.select * from 表名 where 列名 = 搜索值;//查询指定的搜索值的那一行数据(显示全部筛选条件为where后面)


30.select * from 表名  where 列的表达式;//查询指定的一行(表达式例如:列1>100 and 列2<50),并且还支持逻辑运算符和算术运算符和关系运算符


31.select * from 表名  where 列名 like 模糊值%;//在指定列中模糊查找(%的位置为不知道的)


32.select * from 表名  where 列名 between 值1 and 值2;//筛选在指定列中满足值1到值2中范围的数据,(可以通过where写条件看看有多少满足条件的行)


33.select * from 表名 order by 列名;//升序排序列


34.select * from 表名 order by 列名 desc;//降序排序列


35.select * from 表名 where 列名 like 值% order by 列名;//综合应用


36.select count(*) from 表名;//显示有多少行count不会统计null的信息


37.select count(列名1) from 表名 where 列名2>100;//显示满足列2的条件并在列1有多少行


38.select couunt(列名) from 表名;//列的总数


39.select avg(列名) from 表名;//列的平均数


40.select max(列名) from 表名;//列中的数组的最大值


41.select * from 表名 group by 列名; //对列中相同的进行分为一组


42.select * from 表名 group by 列名 having 条件;//group与having一起使用类似于where


43.select * from 表名 group by 列名1 列名2;//先对列1分组在对列2分组


44.select charset(列名) from 表名;//返回每一行字符集(以下所有值都为字符串文本类型)


45.select concat(列名1,值,列名2) from 表名;//把各列和值拼接为一列


46.select instr(值1,值2) from dual;//返回值2在值1中的位置(dual为系统默认的表)


47.select ucase(列名) from 表名;//把列全部转化为大写


48.select lcase(列名) from 表名;//把列全部转化为小写


49.select left(列名,取出的个数) from 表名;//从列中的数据中提取指定个数字符


50.select length(列名) from 表名;//返回字节


51.select replace(列名,找值,替换值) from 表名;//把列中的寻找值替换成替换值


52.select strcmp(列名1,列名2) from 表名;//查找两个列的字符串文本是否相等


53.select substring(列名,位置1,位置2) from 表名;//类似于sj(iapp里面的字符截取)


54.select ltrim(列名) from 表名;//去掉列中的所有空格


55.select abs(列名) from 表名;//把列直接去绝对值


56.select bin(列名) from 表名;//把列中的数字转化为二进制


57.select conv(列名,进制1,进制2) from 表名;//把列中的进制1转化为进制2


58.select floor(列名) from 表名;//比值小的最大整数


59.select format(列名,位数) from 表名;//保留指定小数位(四舍五入)


60.select least(列名) from 表名;//最小数


61.select mod(列名) from 表名;//求余数


62.select rand() from dual;//会返回一个随机数


63.select current_date() from dual;//返回当前日期


64.select current_timestamp() from dual;//返回当前时间戳


65.select now() from dual;//返回当前具体时间


66.select date_add(输入时间,interval 10 minute或year...) from dual;//返回输入时间往后10分钟的值(加)


67.select datediff(时间1,时间2) from dual;//返回时间1于时间2的相差多少天(格式:2022-11-11)


68.select date_sub(输入时间,interval 10 minute或year...) from dual;//返回输入时间往前10分钟的值(减)


69.select data(时间) from dual;//返回年月日,时分秒不会显示


70.use 数据库名;//打开数据库(在数据库里面也可以使用)


71.select year(时间) from dual;//从时间中返回年


72.select month(时间) from dual;//从时间中返回月


73.select user() from dual;//返回当前MySQL数据库是哪个用户登录


74.select database() from dual;//返回当前在哪个数据库名


75.select md5(列名) from 表名;//对表中的一列数据进行md5加密


76.select password(列名) from 表名;//对表中的一列数据进行默认加密


77.select if(true,值1,值2) from dual;//返回值1,类似三元运算符


78.select ifnull(null,值1) from dual;//返回值1,如果null位置不是null则返回null位置的值


79.select case when true then 值1 when true then 值2 else 值3 end;//返回jack,为真则返回对应的值并退出(true或者false可以用布尔表达式可以返回真假)


80.select if(列名 is null,值1,值2) from dual;//is null可以返回是否为空,参考三元运算符


77.select * from 表名 order by 列名1 asc , 列名2 desc;//先弄出全部列,然后列1升序再次列2降序


78.select * from 表名 limit 0,3;//显示表中第一行到第三行的表


79.select *(列) from 表名 group by 列名1 having 条件 order by 列名2 limit 行数1,行数2;//综合应用,顺序要按照这个来(不能颠倒!) 


80.select * from 表名1,表名2;//导入多个表的列(取出第一张表的第一行与第二张表的每一行进行组合这种返回的结果称为笛卡尔集)


81.select * from 表名1,表名2 where 笛卡尔集的过滤条件;//处理笛卡尔集的返回结果(笛卡尔集的返回值是要避免的)


82.select 表名1.列1,表名1.列2,表名2.列1,表名2.列2... from 表名1,表名2 where 条件;//指定导入每个表中的指定列


83.select * from 表名1 as 表1别名1,表1 as 表1别名2;//把表1分为两个表再导入合并为笛卡尔集(再通过条件过滤)


84.select * from 表名1 where 列名1=(select * from 表名2 where 列2=值);//嵌套查询


85.select * from (select * from 表名1);//用嵌套写成临时表的创建 


86.select * from 表名1 where 列名1>any(select * from 表名2 where 条件);//总结就是SQL语句的嵌套查询


87.select * from 表名1 where (列名1,列名2) = (select 列名1,列名2 from 表名2);//嵌套查询列1和列2完全相同的一行(SQL中相同就是"="不是"==")


88.select * from (select * from 表名1),表名2 where 条件;//综合应用


89.select 表名1.* from 表名1,表名2; //用两个表,其中只导入表名1中的全部列(如果*就导入了两个表中的全部列)


90.insert into 表名1 (列名1,列名2...) select 列名1,列名2... from 表名1;//复制表


91.insert into 表名1 select * from 表名1; //自我复制


92.select * from 表名1 union select * from 表名2;//去重复并合并


93.select * from 表名1 union all select * from 表名2;//合并不去重复


94.insert into 表名 values(值1,值2),(值1,值2).....;//添加多个行


95.create table 表名 (列名1 数据类型 primary key,列名2 数据类型);//增加表并设置列名1为主键(不能重复且不能为null的一列)


96.create table 表名 (列名1 数据类型,列名2 数据类型,primary key(列名1,列名2));//添加复合(两个以上)主键,列名1和列名2都设置为主键(当列名1和列名2都重复或者都是null才会报错,不然也可以添加值的)


97.create table 表名 (列名1 数据类型,列名2 数据类型 unique);//创建表并设置列名2中的数据不能重复(值可以是null,这就是与主键的区别)


98.create table 表名 (列名1 数据类型 unique,列名2 数据类型 unique);//创建表并设置列名1和列名2为unique(不能重复但可以unique)


99.create table 表名 (列名1 数据类型 primary key,列名2 数据类型 foreign key(列名2) references 主表名(主表的主键列名));//创建表并设置列名2为外键(必须主表中的主键列有对应添加的值,才可以添加值添加到这个表中,该表的引擎要是innodb才可以添加外键)


100.create table 表名 (列名1 数据类型 check(列名1 in("判断值1","判断值2")),列名1 数据类型);//增加一张表并添加一列名1,列名1在添加的时候必须要在判断值1和判断值2选择才可以不然报错


101.create table 表名 (列名 数据类型 enum("判断值1","判断值2"));//添加值的时候也必须在是判断值1或者判断值2


102.create table 表名 (列名 数据类型 auto_increment);//添加一列并设置为自增长当添加的时候输入null就会自动增长(1,2,3,4....)自增长一般与主键或者unique一起运用,以上面的值自加1


103.create index 索引名 on 表名(列名);//对表名中的列名进行索引操作后可以提高查询效率(但是会占用一定的储存空间),索引名一般为:列名_index(此方法的原理是二叉树原理)


104.show index from 表名;//查询表名中的索引


105.create unique index 索引名 on 表(列名);//对表名中的列名进行添加唯一索引(数据不能重复,不然索引会出错)


106.create index 索引名 on 表名(列名);//对表名中的列名添加普通索引(数据可能重复,索引会慢一些)


107.alter table 表名 add index 索引名(列名);//对已创建的表名中的列名添加普通索引


108.alter table 表名 add primary key(列名);//对已创建的表名进行添加主键索引(在创建表时候如果列设置为主键,那么列就是主键索引)


109.drop index 索引名 on 表名;//删除表名中的索引


110.alter table 表名 drop primary key;//删除表名中的所有主键索引


111.show indexes from 表名;//查询表名中的索引


112.start transaction;//开始事务(需要表的引擎为innodb才支持事务)


113.savepoint 保存名;//保存事务


114.rollback to 保存名;//回退到保存名的时候的事务(类似游戏里面的存档)


115.rollback;//回退到刚刚开始的事务(打开开始事务的时候)(回退只能退不能前进,也就是会删除保存点,一边退一边删)


116.commit;//直接生效,并删除全部保存点


117.select  @@tx_isolation;//查看MySQL当前用户事务隔离级别
  
 未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据
    提交读(Read Committed):只能读取到已经提交的修改,删除的数据
    可重复读(Repeated Read):可重复读。(读到已提交的插入数据)
    串行读(Serializable):读写相互都会阻塞(排队)


118.set session transaction isolation level 级别名(英语);//设置MySQL事务隔离级别
====================================================================
隔离级别           脏读           不可重复读        幻读             锁
未提交读               可能             可能             可能           不加锁
已提交读              不可能           可能             可能           不加锁
可重复读              不可能           不可能          可能          不加锁
可串行化              不可能           不可能         不可能          加锁

119.select  @@global.tx_isolation;//查看当前MySQL系统隔离级别(默认可重复读)


120.show engines;//显示全部引擎
====================================================================
                     MYISAM            Memory             InnoDB           Archive
存储限制           256TB           RAM(内存)            64TB               None
支持事物             No                 No                      Yes                  No
支持全文索引       Yes                No                      No                  No
支持数索引          Yes                Yes                      Yes                   No
支持哈希索引        No               Yes                       No                  No
支持数据缓存       No                N/A                      Yes                  No
支持外键              No                 No                       Yes                No
锁机制                 表锁              表锁                     行锁              行锁
插入速度               高                  高                        低                非常高
#不需要事务,只增删改查等基本操作用MYISAM
#需要支持事务,只能用InnoDB
#用户在线,离线状态(不断变化的数据,不重要)用Memory


121.create table 表名 (列名1 数据类型,列名2 数据类型) engine 引擎名;//创建表并定义引擎(默认引擎lnnodb)


122.alter table 表名 engine=引擎名;//修改表的引擎


123.create view 视图名 as select 列1,列2,列3.... from 表名;//创建视图(把指定的列弄成一个虚拟表叫视图)


124.select * from 视图名;//查看视图的列(把视图看成一张虚拟表就可以)


125.drop view 视图名;//删除视图


126.update 视图名 set 列名=值 where 列名=搜索值;//指定位置修改视图的数据(视图是虚拟表,虚拟表改变会改变真实表也就是当时创建的视图的时候用的表)


127.create user "用户名"@"登陆IP" identified by 登陆密码;//创建用户


128.select * from mysql.user;//查询全部的用户信息


129.drop user "用户名"@"登陆IP";//删除用户


130.set password = password(密码);//修改自己的密码


131.set password for "用户名"@"登陆IP" = password(密码);//修改其他人密码(不管什么操作,操作别人必须得权限高的)


132.grant 权限1,权限2 on 数据库名.表名或视图名 to "用户名"@"登陆IP";//给用户对数据库中的表或者视图添加权限1和权限2(权限一般有select,insert,update)


133.grant all on *.* to "用户名"@"登陆IP";//给用户全部数据库和表或视图添加全部权限


134.revoke 权限 on 数据库名.表名或视图名 from "用户名"@"登陆IP";//回收对于的权限与grand操作相反


135.create user 用户名;//没有指定:"用户名"@"登陆IP",所以可以被任何IP登陆


136.create user "用户名"@"192.168.0.%";//添加用户指定IP中用%代替所以,在最后面加上%表当前网端可以登陆(但是删除用户的时候也要像这样的格式写,才可以删除成功)


137.create user "用户名"@"localhost";//添加用户指定本地IP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Penge.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值