Mysql基本使用

数据库就是存储数据的仓库
分为关系型数据库和非关系型数据库
常用的数据库管理软件有:甲骨文的oracle MySQL(开源、免费、跨平台)  
IBM的db2 微软的sql server access

下载安装MySQL:
登录  cmd :mysql -u用户名 -p(回车就是输入密文,不回车直接输入就是明文,都可以)
退出  quit;exit;-q; 不要忘记分号
连接其他主机的MySQL:
mysql -h 服务器IP -P 端口号(一般默认3306)-u用户名 -p

sql及其规范
sql就是针对数据库操作的指令集
不区分大小写,尽量用大写
单行注释 --
多行注释 /* */
打印当前时间 select now();
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2019-09-18 20:26:25 |
+---------------------+
1 row in set (0.00 sec)


显示所有数据库: 
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | book_msg           |
    | dianqi_std         |
    | information_schema |
    | mysql              |
    | performance_schema |
    | sakila             |
    | sys                |
    | world              |
    +--------------------+
    8 rows in set (0.15 sec)
删除数据库:
    drop database 数据库名;
创建数据库:
    create database dbname;
    C:\ProgramData\MySQL\MySQL Server 8.0\Data  --所有创建的数据库都在这ProgramData是隐藏的
    
    mysql> create database s3;                   --创建一个名为s3的数据库
    Query OK, 1 row affected (0.02 sec)

    mysql> create database s3;                   --重复创建这个数据库
    ERROR 1007 (HY000): Can‘t create database ‘s3‘; database exists  --报错,已存在
    mysql> create database if not exists s3;       -- 加上一句话就不报错,出现警告
    Query OK, 1 row affected, 1 warning (0.01 sec)

    mysql> show warnings;                          -- 查看出现的警告
    +-------+------+---------------------------------------------+
    | Level | Code | Message                                     |
    +-------+------+---------------------------------------------+
    | Note  | 1007 | Can‘t create database ‘s3‘; database exists |
    +-------+------+---------------------------------------------+
    1 row in set (0.00 sec)
    
    
    查看创建信息
    show create database s3;
    +----------+------------------------------------------------------------------------------------------------------------------------------+
    | Database | Create Database                                                                                                              |
    +----------+------------------------------------------------------------------------------------------------------------------------------+
    | s3       | CREATE DATABASE `s3` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION=‘N‘ */ |
    +----------+------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    在创建时指定字符编码
    create database s4 character set gbk;
    再查看就变为gbk编码了
    mysql> show create database s4;
    +----------+-----------------------------------------------------------------------------------------------+
    | Database | Create Database                                                                               |
    +----------+-----------------------------------------------------------------------------------------------+
    | s4       | CREATE DATABASE `s4` /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTION=‘N‘ */ |
    +----------+-----------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    修改已经创建的数据库的字符编码
    ALTER DATABASE employee CHARACTER SET UTF8;
    

    
    进入数据库:
    use bdname;
    检测当前所在的数据库:
    select database();
    +------------+
    | database() |
    +------------+
    | s4         |
    +------------+
    1 row in set (0.00 sec)
    
    可以通过use dbname 在不同的数据库之间切换

表的创建
 主键:非空且唯一   not null  unique 
 三种数据类型:数字、字符、时间和日期
 
 mysql> CREATE TABLE employee(                  --创建表
    -> id INT PRIMARY KEY AUTO_INCREMENT,       --主键 自增
    -> name VARCHAR(25),                        --25个字节
    -> birthday date,
    -> salary DOUBLE(7,1)                       --一共七个数字,小数点后一位
    -> );
    Query OK, 0 rows affected (0.10 sec)

    mysql> desc employee;   查看表结构
    +----------+-------------+------+-----+---------+----------------+
    | Field    | Type        | Null | Key | Default | Extra          |
    +----------+-------------+------+-----+---------+----------------+
    | id       | int(11)     | NO   | PRI | NULL    | auto_increment |
    | name     | varchar(25) | YES  |     | NULL    |                |
    | birthday | date        | YES  |     | NULL    |                |
    | salary   | double(7,1) | YES  |     | NULL    |                |
    +----------+-------------+------+-----+---------+----------------+
    4 rows in set (0.01 sec)
    
    mysql> SHOW CREATE TABLE employee;    --查看表的创建信息
    +----------+------------------------------------
    | Table    | Create Table                                                                                                                                                                                                                       
    +----------+-----------------------------
    | employee | CREATE TABLE `employee` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(25) DEFAULT NULL,
      `birthday` date DEFAULT NULL,
      `salary` double(7,1) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk |
    +----------+-------------------------------
    1 row in set (0.01 sec)
    
表字段操作:
    添加字段:
    ALTER TABLE employee ADD entry_date date not null AFTER birthday;   --AFTER(FIRST)将字段添加到某个字段之后
    添加多个字段
    ALTER TABLE employee ADD A INT,
    ADD B INT;
    删除字段:
    ALTER TABLE employee DROP A,
    DROP B;
    修改字段:
    ALTER TABLE employee MODIFY A VARCHAR(4) UNIQUE;
    修改已经创建的表的字符编码
    ALTER TABLE employee CHARACTER SET UTF8;
    修改字段名:
    ALTER TABLE EMPLOYEE CHANGE A B CHAR(4);
    修改表名:
    RENAME TABLE S3 TO S4;
表记录操作:
    向表中添加记录:
    方式一 : () VALUES () VALUES左右对应
    INSERT INTO EMP (id,name,gender,salary,B) VALUES
                 (1,"瞎驴",1,5000.21,"HELL");
    添加多条:
    INSERT INTO EMP (name,gender,salary,B) VALUES
    ("ALEX",1,5000,"WORL"),
    ("丹丹",0,3000,"HELO");
    注意:如果插入的id号不是按顺序来的,下次插入会按插入的id继续向下计数
    就是说本来id号到6了,继续插入记录应该是7,但指定id为10,下面插入的记录如果没指定id,
    就是11
    方式二: SET 键值对:
    INSERT INTO EMP SET name="珊珊",gender=0;     --其余没有对应的自动为NULL
    查看表记录:
    mysql> select * from emp;
    +----+------+--------+--------+------+
    | id | name | gender | salary | B    |
    +----+------+--------+--------+------+
    |  1 | 瞎驴 |      1 | 5000.2 | HELL |
    |  4 | ALEX |      1 | 5000.0 | WORL |
    |  5 | 丹丹 |      0 | 3000.0 | HELO |
    +----+------+--------+--------+------+
    3 rows in set (0.00 sec)
    修改表记录:
    UPDATE EMP SET name = "lvxia" WHERE ID = 1   -- WHER 做筛选,否则会修改所有的name
    删除表记录:
    两种方式:
    DELETE FROM TABLE_NAME [WHERE....];  :逐条删除
    TRUNCATE TABLE TABLE_NAME;           :删除整个表,在创建一个空表