mysql 命令笔记:
1.显示存在的所有数据库
---show databases;
2.选择userdata的数据库
---use userdata;
3.显示数据表
---show tables;
4.查看login表的结构
---desc login;
4.1.查看login表的列属性
---show columns from login;
5.查看表里的所有数据
---select * from login;
5.1.查看表里的数据,竖直排列
---select * from login\G;
5.2.从表中第几条数据开始查询,返回多少条数据
例如从login表中的第2条开始,返回3条数据
---select * from login limit 3 offset 2;
5.3.匹配查询
---select * from login where Name like "zhang%"
5.4.排序查询-默认升序asc
---select * from login order by Age;
5.5.降序查询
---select * from login order by Age desc;
5.6.分组查询统计 --------------
例如有一个成绩表info(名字,课程,分数):Name ,course,score
要统计每个人的总分是多少:
---select Name, sum(score) from info group by Name
如果要对所有人总分求和:
---select Name, sum(score) from info group by Name with rollup
给求和的列属性加个名字total:
---select coallesce(Name,"total"), sum(score) from info group by Name with rollup
6.增加用户访问权限:
-默认情况下,可以直接使用root用户登录mysql,同时可以查看mysql数据库中的user表,知晓多少用户可以访问数据库
-增加新用户访问数据库,就是往 mysql 中的user表添加一条新数据,
例如:增加zhangsan通过密码123只能访问userdata数据库
指定某用户的访问权限
---grant all on userdata.* to 'zhangsan'@'localhost' identified by '123'
7.创建数据库
---create database newdb charset utf-8
加入charset utf-8 是为了能写入中文
8.删除和数据库
---drop database newdb
9.更改数据表内容
---update login set age = 18 where Name = "zhangsan"
10.删除数据表内容
---delete * from login where Name = "zhangsan"
11.增加数据表内容
---insert into login(Name,Age,Date_birth) values("zhangsan",18,"1999-01-011")
12.修改表的字段(增加,删除,修改)
12.1增加表的字段gender
---alter table login add gender enum("M","F")
12.2删除表的字段gender
---alter table login drop gender
12.3修改表的字段gender属性为非空
---alter table login modify gender enum("M","F") not null
12.4修改表的字段gender为sex
---alter table login change gender sex char(10) not null default "x"
主键 --外键
例如
表1
---create table class(id int not null primary key,name char(16))
表2
---create table student(id int(11) not null,name char(12) not null,class_id int not null,primary key (id),key fk_class_key (class_id),constraint fk_class_key foreign key (class_id) references class (id))
表2中一个class_id字段为外键,引用于表1 的id
表2可以随便删除数据,但是插入数据时,其插入的字段class_id 必须在表1中存在
表1可以随便插入数据,但是删除数据时,确保表2中的class_id都不在表1中。
因此表1的id和表2的class_id要相同,而且要同时存在。
添加或删除主键:
添加主键属性
---alter table login add primary key (Name);
删除主键
---alter table login drop primary key;
索引:
如果一个表中没有指定主键,查询表中的数据就是循环遍历表中的每条数据,直到找到你要的数据。如果表中有10000条,而你的数据正好在9999,则要循环9999次,才能找到。
因此效率不高。
加入索引就是可以以某种查找算法来搜索,可以极大的提高查找效率。例如主键就是索引,查询数据时以主键为条件就能体现查找效率,如果以其他字段名为条件就是一般的遍历方法,
所以,给一个大数据表就要设置主键和索引字段,表的主键自动成为索引,
例如:给login表的Name字段加上索引
---create index index_name on login(Name(20))
index_name就是索引的名字
查看表有哪些索引:
---show index from login;
---show index from login\G;
删除索引:
---drop index index_name on login;
索引 又可以分为一般索引和唯一索引:
表的任何字段都可以设置成索引,但是唯一所以表示此字段在表中唯一,例如主键。
---create unique index index_name on login(字段名(长度))
其中字段名必须是表中的唯一,即不能重复,可以为空