create database 数据库名 charset=utf8;
show databases;
select database();
drop database 数据库名;
CREATE TABLE table_name(
字段名称 数据类型 可选的约束条件,
column1 datatype contrai,
column2 datatype,
column3 datatype,
.....
columnN datatype,
-- 主键说明可以放在字段中单独说明 也可以放在最后统一说明
PRIMARY KEY(one or more columns)
);
show create table 表名;
drop table 表名;
show tables;
desc 表名;
alter table 表名 add 列名 类型;
alter table 表名 change 原名 新名 类型及约束;
alter table 表名 modify 列名 类型及约束;
alter table 表名 drop 列名;
select 查询字段 from 表名;
select * from 表名 where 条件;
等于: =
大于: >
大于等于: >=
小于: <
小于等于: <=
不等于: != 或 <>
1. in表示在一个非连续的范围内
2. between ... and ...表示在一个连续的范围内
注意: between A and B在匹配数据的时候匹配的范围空间是 [A,B]
1. null与''是不同的
2. is null
select * from 表名 order by 排序列1 asc|desc [,排序列2 asc|desc,...]
group by分组
group by + group_concat()
group by + 聚合函数
group by + having
group by + with rollup
可以使用limit限制取出记录的数量,但limit要写在sql语句的最后。
select * from students limit 0,3; 意思是:从第下标为0的记录开始取,取3条。
select * from 表名 limit start=0,count
语法1
select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2
语法2
select 字段 from 表1 , 表2 where 表1.字段1 = 表2.字段2
左连接
主表 left join 从表 on 连接条件;
右链接
从表 right join 主表 on连接条件;
select 字段名 from 表名 where 字段 in (select 字段名 from 表名);
insert into 表名 values (...)
delete from 表名 where 条件
update students set isdelete=1 where id=1;
update 表名 set 列1=值1,列2=值2... where 条件
事务Transaction,是指作为一个基本工作单元执行的一系列SQL语句的操作,要么完全地执行,要么完全地都不执行。
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性
数据库总是从一个一致性的状态转换到另一个一致性的状态。
通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。当一个事务操作数据时,其他事务的操作必须等待,当前事务提交后才可以执行。
一旦事务提交,则其所做的修改会永久保存到数据库。(此时即使系统崩溃,修改的数据也不会丢失。)
表的引擎类型必须是innodb类型才可以使用事务
show engines; # 查看数据库服务器支持的表存储引擎
开启事务后执行修改命令,变更会维护到本地缓存中,而不维护到物理表中
begin;
或者
start transaction;
将缓存中的数据变更维护到物理表中
commit;
放弃缓存中变更的数据 表示事务执行失败 应该回到开始事务前的状态
rollback;
set autocommit=0
即可索引是一种数据结构,用于快速查找和访问表中的数据。它可以看作是一个目录,帮助我们在数据库表中快速找到所需的信息。索引的作用是提高查询效率,因为它能够减少数据库系统需要扫描的数据量,从而加快查询速度。
show index from 表名;
create index 索引名称 on 表名(字段名称(长度))
drop index 索引名称 on 表名;
索引使用
索引的副作用-索引虽好 不要贪杯
select host,user,authentication_string from user;
create user '用户名'@'主机' identified by '密码';
grant 权限 on 数据库.表名 to '用户名'@'主机名';
flush privileges;
show grants for '用户名'@'localhost';
grant 权限名称 on 数据库 to 账户@主机 with grant option;
flush privileges;
delete from user where user='用户名';
drop user '用户名'@'主机';
ALTER user 'root'@'%' IDENTIFIED BY '密码';
flush privileges;
[mysqld]段下加入一行“skip-grant-tables
启动服务
使用mysql -u root -p回车直接登录
use mysql
update user set authentication_string='' where user='root';