zoukankan      html  css  js  c++  java
  • 数据库-之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

  • 相关阅读:
    set转成toarray()
    list和set的拉拉扯扯的关系
    【转载】VNC和远程桌面的区别
    笔记本最小安装centos7 连接WiFi的方法
    mysql 索引优化 性能调优 锁
    PageHelper 自动去掉排序参数问题
    抽奖算法 百万次抽奖 单线程环境下 约 3.5 秒
    gitlab 安装和使用
    sharding sphere 分表分库 读写分离
    mycat 安装 分表 分库 读写分离
  • 原文地址:https://www.cnblogs.com/shuaishuai1993/p/4899166.html
Copyright © 2011-2022 走看看