数据库-之MySQL的dos命令

有关数据库(MySQL收集都中文文档)

SQL  Structured Query Language  结构化查询语言

    作用:与数据库进行交互

SQL标准 和 方言 

SQL语句的分类:

DDL:数据定义语言

DML:数据操作语言

DCL:数据控制语言

DQL:数据查询语言

TPL:事务处理语言等 

DDL:作用 定义数据库,表结构(关键字:create alter drop)

创建数据库:    

创建数据库:  show create database mydb1;

查看数据库创建细节: show create database mydb1;

创建一个使用utf8字符集的mydb2数据库; create database mydb2 character set utf8 ;

创建一个使用utf8字符集,并带有校对规则的mydb3数据库

Create database mydb3 character set utf8 collate utf8_general_ci;

显示库的语句 show databases;

显示数据库创建语句: show create database db;

数据库删除语句: drop database db;

查看服务器的数据库,并把其中某一库的字符集改成gbk;

alter database mydb2 character set gbk;

------------------------------------------------------------------------------

创建表结构操作

创建表之前要先选择数据库

创建一个员工表

Create table employ(

Id int ,

Name varchar(200),

Gender varchar(20),

Job varchar(300),

Resume text); //注意最后一行不能有 ’,’

查看当前数据库的所有表:

Show tables;

查看表的创建细节

Show create table employ;

修改表结构 使用alter关键字

在上述表中增加一个列 alter table employ add 列名 blob;

修改某个列 (change关键字是用来改列名的,modify 是改类型)

 (例如将name 列的长度改成60) alter table employ modify name varchar(60)

删除gender的列

Alter table person drop gender;

把表的名字employ改成employees

Rename table employ to employees

修改表的字符集: alter table persons charcter set gbk;

修改列名name改成username   alter table employee change name  username varchar(10) ;

    DML 数据操作语句 操作表中的数据

    关键字:insert update delete select

执行  Mysql>Show variables like ‘character%’;  命令

即可列出对各方面(客户端、连接、数据库,结果集等)的编码字符集

对于编码格式,出现乱码的情况:(大部分应用使用到中文时)

告知服务器 客户端使用的编码为gbk set character_set_client=gbk;

告知服务器客户端查看结果集用的编码为gbk set character_set_results=gbk;

结果编码是暂时性的,永久性的修改可以到MySQL中的my.ini配置文件里面找到并修改

---------------------------------

首先对于插入数据 Insert

字符串类型:使用单引号引起来 ‘asa’

日期时间: 使用单引号引起来  ‘ ’

特殊值: null

练习(举例按照上述员工表)

向员工表中插入三条员工信息 insert into employee (id,name,gender)values(3,’lisi’,’男’);

-----------------------------------

下面是对数据库表中的 查,删 改

Update employee set gender=’’;

Update employee set gender=’’ whrere username=’’;

Update employee set gender=’’,id=  whrere username=’’;  //更新

删除..的记录

Delete from employee where username=’’;

删除所有记录

Delete from employee; //删除

    DQL 数据操作语言 作用来 查询 关键字Select

直接练习:

查询表中所有学生的信息 select * fromemployee;

查询表中所有学生的姓名和ID select name ,Id from employee;

过滤表中重复的数据: select distinct gender from employee;

查询时可以进行算数计算 select id ,username+gender from employee;

别名:  select id (AS) 别名,username+gender from  别名 employee;

还有where语句,另外在在where子句中经常使用的运算符

比较运算符 >   <   <=   >=   =    <> 大于、小于、大于(小于)等于、不等于

BETWEEN  ...AND... 显示在某一区间的值(含头含尾)

IN(set) 显示在in列表中的值,例:in(100,200)

LIKE ‘张pattern 模糊查询 Like语句中,代表零个或多个任 意字符,代表一个字符,例first_name like _a%;

IS NULL 判断是否为空

逻辑运算符 and 多个条件同时成立

or 多个条件任一成立

not 不成立,例:where not(salary>100);

使用order by 子句排序查询结果。

Order by 指定排序的列,排序的列即可是表中的列名,也可以是select 语句后指定的列名。

Asc 升序、Desc 降序

ORDER BY 子句应位于SELECT语句的结尾。 默认是升序ASC

练习:

对数学成绩排序后输出。

mysql>SELECT name,math FROM student ORDER BY math;

    对总分排序后输出,然后再按从高到低的顺序输出

    mysql>SELECT name,chinese+english+math FROM student ORDER BY chinese+english+math DESC;

数据完整性

数据完整性是为了保证插入的数据是正确的,他防止了用户可能的输入错误

完整性分为三类:

实体完整性

域完整性

参照完整性

实体完整性:规定表的一行(即每一条记录)在表中是唯一的实体。实体完整性通过表的主键来实现。

id int primary key auto_increment;...

主键分类:逻辑主键和业务主键

逻辑主键:不代表实际意义,只是区分不同记录。比如id;

业务主键:代表具体的实际意义

域完整性:指数据库表的列(即字段)必须符合某种特定的数据类型或约束。比NOT NULL

非空约束;not null

唯一约束:unique

id int primary key auto_increment

Username varchar(100) not null unique,

Gender varchar(10) not null

参照完整性:保证一个表的外键和另一个表的主键对应。

表间的关系:一对多,多对多,一对一

定义外键约束

constraint 表名id_FK foreign key(表名_id) references 表名(id)

参照多表,做删除表操作时,delete from 表名 where id= 1 ;删除不了

把表中的id设置成null,可以删除

数据查询语言(复杂一点的)

连接查询:

from TABLE1 join_type TABLE2  [on (join_condition)] [where (query_condition)]

其中,TABLE1TABLE2表示参与连接操作的表,TABLE1为左表,TABLE2为右表。on子句设定连接条件,where子句设定查询条件,join_type表示连接类型

交叉连接查询CUSTOMER表和ORDERS

SELECT * FROM customer CROSS JOIN orders;

SELECT * FROM customer,orders;

内连接查询

显式内连接:使用inner join关键字,在on子句中设定连接条件

SELECT * FROM customer c INNER JOIN orders o ON c.id=o.customer_id; 

隐式内连接:不包含inner join关键字和on关键字,在where子句中设定连接条件

SELECT * FROM customer c,orders o WHERE c.id=o.customer_id; 

左外连接查询

使用left outer join关键字,在on子句中设定连接条件

SELECT * FROM customer c LEFT OUTER JOIN orders o ON c.id=o.customer_id; 

右外连接查询

使用right outer join关键字,在on子句中设定连接条件

SELECT * FROM customer c RIGHT OUTER JOIN orders o ON c.id=o.customer_id; 

子查询

子查询也叫嵌套查询,是指在select子句或者where子句中又嵌入select查询语句

SELECT * FROM orders WHERE customer_id=

(SELECT id FROM customer WHERE name LIKE '%陈冠希%');

联合查询

联合查询能够合并两条查询语句的查询结果,去掉其中的重复数据行,然后返回没有重复数据行的查询结果。联合查询使用union关键字

SELECT * FROM orders WHERE price>200 UNION SELECT * FROM orders WHERE customer_id=1;

最后,学习一下数据的备份与恢复

数据库备份:

mysqldump -u root -psorry test>test.sql

数据库恢复:

创建数据库并选择该数据库

SOURCE 数据库文件

或者:

mysql -u root -psorry test<test.sql

原文地址:https://www.cnblogs.com/shuaishuai1993/p/4899166.html