mysql 基础篇
一、基本库操作
1.查看数据库
# mysql -uroot -p123456
mysql> show databases; #查看数据库
或者
# mysql -uroot -p123456 -e 'show databases'
2.创建数据库
语法:create database 数据库名;
创建数据库注意事项:
(1) 在文件系统中,MySQL的数据存储区将以目录方式表示MySQL数据库。因此,上面命令中的数据库名字必须与操作系统的约束的目录名字一致。
例如不允许文件和目录名中有\,/,:,*,?,”,<,>,|这些符号,在MySQL数据库名字中这些字母会被自动删除。<遵从目录的约束>
(2) 数据库的名字不能超过64个字符,包含特殊字符的名字或者是全部由数字或保留字组成的名字必须用反引号``包起来。
(3) 数据库不能重名。
(4)如有特殊名字需要用‘’引起,查询也要用‘’引起。
mysql> create database HH;
mysql> create database ‘user’
3.选择要操作的数据库
mysql> use HH;
4.查看自己所处的位置及默认所在的位置
mysql> select database();
5.在命令行选择默认的数据库
# mysql –u root -p123456 HH
6.删除数据库:删除没有任何提示,要慎重操作
mysql> drop database HH;
或者
Mysql> drop database if exists HH;
如果不在就建立数据
mysql> create database if not exists HH;
二、关于表的操作
1、查询表
mysql> use HH;
mysql> show tables;
2. 创建表
语法:create table 表名 (字段名 类型, 字段名 类型, 字段名 类型);
创建前必须得有库所以先创建库
mysql> create database student;
mysql> use xuesheng;
mysql> create table student(id int (20),name char(40),age int(11));
3. 查看表的结构
mysql> desc student;
mysql> explain xuesheng.student;
mysql> show columns from xuesheng.student;
mysql>show fields from xuesheng.student;
4. 查看创建表执行了哪些命令
mysql> show create table student \G
#可以指定表的默认存储引擎和字符集
mysql> create table student2(id int(20),name char(40),age int)ENGINE=MyISAM DEFAULT CHARSET=utf8;
mysql> show create table student2\G
5. 删除表
mysql> drop table student2;
6. 禁止预读表信息
没有禁止前的提示
登录的时候加上-A参数
# mysql -uroot-p123456 -A
mysql> use xuesheng;
7. 修改表名称alter
语法:alter table 表名 rename 新表名;
Mysql> use xuesheng;
Mysql> alter table student rename students;
#student表名修改为students
Mysql> show tables;
8. 修改表中的字段类型
语法:alter table 表名 modify 要修改的字段名要修改的类型;
Mysql> desc students;
Mysql> alter table students modify id int(10);
Mysql> desc students;
9. 修改表中的字段类型和字段名称
语法:alter table 表名 change 原字段名新字段名新字段类型;
注意:MySQL不支持同时修改多个字段。
MODIFY [COLUMN] col_namecolumn_definition
[FIRST | AFTER col_name]
Mysql> desc students;
Mysql> alter table students modify id int(10);
Mysql> desc students;
注:CHANGE 和MODIFY的区别:
CHANGE 对列进行重命名和更改列的类型,需给定旧的列名称和新的列名称、当前的类型。 MODIFY 可以改变列的类型,此时不需要重命名(不需给定新的列名称)
10. 在表中添加字段
语法:alter table 表名 add字段名 字段类型;
Mysql> alter table students add sex enum('M','W');
Mysql> desc students;
11. 指定位置添加字段,在第一列添加一个字段
Mysql> alter table students add uid int(10) first;
Mysql> desc students;
在age后面添加一个address字段:
Mysql> alter table students add address char(40) after age;
Mysql> desc students;
12. 删除表中字段
语法:alter table 表名 drop 字段名 ;
Mysql> alter table students drop address;
三、关于表记录的语句
1.插入字段<记录>insert
语法:insert into 表名values (字段值1,字段值2, 字段值3);
Mysql> create table student(id int(20),name char(40),age int);
Mysql> insert into student values(1,'zhangs',21);
插入记录时要对应相对的类型
Mysql> insert into student values(2,'lis',24),(3,'wange',26);
同时插入多条,使用,分开
Mysql> insert into student (id,name)values(4,'hangl');
指定字段插入
2.查询表中记录
语法:select * from 表名称;
Mysql> select * from student; # *表示所有。
当字段比较多的时候我们也可以使用\G
Mysql> select * from student\G
只查询表中某个字段的内容:de
Mysql> select name from student; #看我查看name字段的内容。
Mysql> select id,name from student; #查看id和name字段的内容。
3.查看别的数据库的表或者不在本数据库上进行查看
语法:SELECT 字段 FROM 数据库名.表名;
Mysql> use xuesheng
Mysql> create table student(id int(11),name char(40),age int(5));
Mysql> insert into student values(1,'zhangs',21),(2,'lis',24),(3,'wange',26),(4,'hangl',' ');
Mysql> select *from xuesheng.student;
4.删除记录
删除id为3的行
Mysql> delete from student where id=3;
Mysql> select * from student;
删除age为空的行:
Mysql> delete from student where age is null;
Mysql> select * from student;
5.更新记录
Mysql> update student set name ='M' where id=2;
Mysql> select * from student;
Mysql> update student set id=2; 所有的都变为2
Mysql> select * from student;
Mysql> update student set name='zhangsan',age=21 where id=1; #同时更新多个字段时候用,号隔开
四、SQL基础条件查询语句
语法:select 字段名1,字段名2 from 表名 [where 条件];
1. 查询students表中的name,age
Mysql> delete from student where id = 2;
Mysql> insert into student values(1,'zhangs',21),(2,'lis',24),(3,'jk',24),(4,'lo',25),(5,'io',25),(6,'jk',22);
2. 去重复查询 distinct [d??st??kt] 不同的
Mysql> select distinct name,age from student;
Mysql> select distinct id,name,age from student where id=3;
3. 使用and和or进行多条件查询
or和and 同时存在时,先算and的两边值,逻辑与先执行
Mysql> select id,name,age from student where id>1 and age>24;
Mysql> select * from student where name='zhangs' and (age=21 or age=24);
4. MySQL区分大小写查询
MySQL查询默认是不区分大小写的
Mysql> select name from student where name='jk';
BINARY是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。
5. MySQL查询排序
语法:select distinct 字段1,字段2 from 表名order by 字段名;
默认为升序asc
Mysql> select distinct id from student order by id asc;
Mysql> select distinct id from student order by id desc;
6、 查看创建表执行了哪些命令
mysql> show create table student \G