net start mysql80
win开启mysql进程
net stop mysql80
win关闭mysql进程
MySQL -uroot -p<password>
登录MySQL
create database <dbname>
创建名字为dbname的数据库
show databases;
查看MySQL里面有几个数据库,默认自带四个
use <dbname>
使用dbname数据库
show tables
查看当前库所有表名
desc <tableName>
查看表结构
select * form <tableName>
对tableName进行全表查询
select <field1>, <field2>... from <tableName>
从tableName表查询field1,filed2...
使用as取别名,但是不改变表filed名。(as可以省略,别名不能有空格,有空格可以用单引号)
select <field> as <myfield> for <tableName>
讲查询结果field->myfield
查询计算
select <field>*<n> as <myfiled> form <tableName>
将filed查询结果乘n并且改为myfiled
条件查询 where
**= 等于
<> 或者 !+ 不等于
<= 大于等于 >= 小于等于 > 大于 < 小于
between ... and ... 等价于 >= and <= (左小右大)
and 并且逻辑(优先级高于or, 可以()来提高or优先级)
or 或者逻辑
in (<v1>, <v2>,<v3>...)
在里面就为true
not in (<v1>,<v2>...)
模糊查询%(任意多个) _(任意一个)可以用\转义
排序 order by (默认升序) order by <field1>,<field2> desc
按field1降序,如果相等再比field2
order by <n>
按查询结果的第n列排序
语句执行顺序:select ... from ... where ... order by ... : from->where->select->order by
分组查询(group by可以多个字段联合分组):select <field> from <table> where <condition> group by <field> order by <field>
:执行顺序from-where-group by-select-order by
having:可以对分组之后的数据进一步过滤,效率比较低,尽量使用where过滤
注意:在分组查询里面select<field>里面的field只能是分组字段和分组函数,不然没有意义。
注意:null的判断要用is 或者is not
select <>,<> from <> inner join <> on <> where <>
select <>,<> from
建表:create table <tableName> (<field1> <type> <opt>,<field2> <type> <opt>, ...);
删表:drop table <tableName>
(删除的表不存在会报错), drop table if exists <tableName>
(避免报错)
增加数据insert into:insert into <tableName> (<field1>,<field2> ...) values <v1>,<v2> ...
更新数据:update <tableName> set <field1>=<v1>,<field2>=<v2> ... where <condition>
注意:没有条件会全部更新
删除数据(DML)
delete delete from<tableName> where <condition>
注意:没有条件会删除所有的数据,可以回滚,效率低
truncate(DDL) truncate table <tableName>
删除不可以回滚, 效率高
foreign key <fkName> references <tbName>(<field>)
外键fkName引用表tbName的field字段开启事务:start transaction
提交事务:commit
回滚事务:rollback
事务的特性(ACID):
设置MySQL隔离级别:set global transaction isolation level <isolationLevel>
查看当前的隔离级别:select @@tx_isolation
创建索引: create index <indexName> on <tableName>(<field>)
给表tableName的field字段加索引。
删除索引: drop index <indexName> on <tableName>(<field>)
删除表tableName的field字段的索引。
索引失效几种情况:
创建视图:create view <viewName> as <opt>
用opt(DQL)操作的查询结果创建视图
删除视图:drop view <viewName>
创建用户:create user <userName> indentified by <password>
lower 转小写
upper 转大写
substr 取子串 substr(<strName>,<start>,<len>)
截取strName从start(1开始)开始长度为len
concat 字符串拼接 concat(<str1>,<str2>)
结果为str1+str2
length 取长度
trim 去除前后的空白
str_to_date 将varchar字符串转换成日期date
date_format 将日期date转化为varchar字符串
format 数字格式化
round 四舍五入 round(<num>,<n>)
将num四舍五入保留小数点后n(可以为负数)位
rand() 生成随机数
ifnull 可以将null转换为具体值 ifnull(<field>,<value>)
如果field为null则当作值value
now() 可以获取当前时间
多行处理函数(group by 分组)(默认所有为一组):
count 计数(忽略null) count(<field>) 统计field不为null的行数 count(*) 统计总行数
sum 求和
avg 求平均
max 求最大值
min 求最小值
注意:分组函数不能放在where子句里面
select version();
查看当前MySQL的版本
\c 可以终止sql的输入
source path
导入path路径的数据
mysqldump <databaseName> <path>
把库databaseName导出为sql脚本文件到path目录下
执行顺序 from-where-group by-having-select-order by-limit
case when then 语句 case <field> when <v1> then <opt1> when <v2> then <opt2> else <opt3> end
distinct 查询结果去重 select distinct <field1>,<field2> from <tableName>
联合去重
distinct 只能在所有查询字段最前面
union:结果集合并。注意:结果集合并时两个语句的列要相等
limit:将查询结果一部分取出来,分页查询 limit<n> 取查询结果的前n个 limit <start>,<len> 取start(0开始)开始的n个
笛卡儿积:表连接查询是没加条件查询的结果条数是所有表的积。避免:加条件查询。
create table <tableName> as <opt>
将opt的查询结果新建应该tableName表
unique约束字段自动添加索引
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。