Mysql 基础知识

时间:2019-02-11
本文章向大家介绍Mysql 基础知识,主要包括Mysql 基础知识使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

从网课内总结出来的一些mysql 基础知识,有什么错误希望各位能提出来,万分感谢。
安装mysql就不用说了,咨询的可以留言。

进入mysql
注意 mysql语句中 一般都是;结尾的

C:\Users\lenovo>mysql -uroot -p123
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.5.31 MySQL Community Server (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

一台服务器中可以包含多个库,一个库中包含多个表。

一,库

显示所有库
show databases## 标题;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| slxy1602           |
| slxy2016           |
| sxd                |
| test               |
+--------------------+
6 rows in set (0.00 sec)

mysql>

删除某个库
drop database 库名;

mysql> drop database test;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

进入某个库
use 库名;

mysql> use sxd;
Database changed

创建库
create database 库名;

mysql> create database ddw;
Query OK, 1 row affected (0.01 sec)

修改库的编码格式
alter database 库名 character set 编码格式;

mysql> alter database sxd character set utf8;
Query OK, 1 row affected (0.01 sec)

注意 :每张表的主键只能有一个

表的约束

约束 : 对每个字段设置一定的限制条件

  1. 非空约束 not null (要求该字段不能为空值)
    2. 唯一性约束 unique (要求该字段不能重复)
    3. 主键约束 primary key (既不能为空值,也不能重复。效果相同,本质不同。主键还会默认添加索引----index)
    5. 外键约束 foreign key
    6. 检查约束 (mysql 不支持 oracle支持)

显示当前库下的所有表

show tables;

mysql> show tables;
+---------------+
| Tables_in_sxd |
+---------------+
| qwe           |
| sxd           |
+---------------+
2 rows in set (0.00 sec)

创建表
create table 表名(字段 字段类型,字段 字段类型);

mysql> create table s_xd(
    -> id int,
    -> name varchar(10),
    -> date  date
    -> );

查看表的字段属性类型 desc

mysql> desc s_xd;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(10) | YES  |     | NULL    |       |
| date  | date        | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.03 sec)

插入数据 并查看
insert into 表名

mysql> insert into    s_xd(id,name) values (12,"sxd");
Query OK, 1 row affected (0.00 sec)

mysql> select * from s_xd;
+------+------+------+
| id   | name | date |
+------+------+------+
|   12 | sxd  | NULL |
+------+------+------+
1 row in set (0.00 sec)

给字段添加约束的两种方式

列级约束
mysql> create table qwe(
    -> id int primary key,
    -> name varchar(10) not null,
    -> date date
    -> );
Query OK, 0 rows affected (0.02 sec)

表级约束
mysql> create table ewq(
    -> id int,
    -> name varchar(10),
    -> date date,
    -> primary key (id),
    -> unique (name)
    -> );
Query OK, 0 rows affected (0.01 sec)

删除表

mysql> drop table ewq;
Query OK, 0 rows affected (0.01 sec)

主键约束

  1. 表设计时一定要有主键
  2. 表中的某个字段添加主键约束后,该字段为主键约束。主键字段中出现的每一个数据都称为主键值。
  3. 一张表应该有主键字段,如果没有,则该表无效。
  4. 主键值是挡墙数据的唯一标识,是当前数据的身份证号。主键值是挡墙数据的唯一标识,是当前数据的身份证号。
  5. 即使表中两行记录相关数据相同,但由于主键值不同,所以也认为是两行不同的数据
  6. 无论是单一主键还是复合主键,一张表的主键只能有一个(约束只能有一个,但可以作用到好几个字段)
  7. 单一主键 :给一个字段添加主键约束。 复合主键 :给多个字段联合添加一个主键约束(还只能用表极约束)

单一主键 (列级定义)

mysql> create table q1(
    -> id int primary key,
    -> name varchar(4)
    -> );
Query OK, 0 rows affected (0.02 sec)

复合主键 (表级定义)

mysql> create table q2(
    -> id int,
    -> name varchar(4),
    -> date date,
    -> primary key(id,name)
    -> );
Query OK, 0 rows affected (0.02 sec)

自增主键值 auto_increment

专门用来自动生成主键值,主键值不用用户维护,自动生成,自增数从1 开始逐渐递增。

mysql> create table w1(
    -> id int primary key auto_increment,
    -> date date
    -> );
Query OK, 0 rows affected (0.02 sec)

插入几条数据之后,主键值自动增加

mysql> insert into w1(date) values ("2012-12-11");
Query OK, 1 row affected (0.00 sec)

mysql> insert into w1(date) values ("2012-12-14");
Query OK, 1 row affected (0.00 sec)

mysql> select * from w1;
+----+------------+
| id | date       |
+----+------------+
|  1 | 2013-02-12 |
|  2 | 2012-12-11 |
|  3 | 2012-12-14 |
+----+------------+
3 rows in set (0.00 sec)

外键约束 foreign key

1.什么是外键?
若有两个表 A,B ,id 是A的主键,而B中也有id字段,则id就是B的外键(需要定义),外键约束主要用来维护两个表之间数据的一致性。
2.某个字典添加外键约束后,该字段为外键字段,外键字段中每个数据都是外键值。
3.单一外键 : 给一个字段添加外键约束。 复合外键 :给多个字段联合添加一个外键约束。
4.一张表可以有多个外键字段(与主键不同)
5.外键值可以为空
6.外键字段去引用一张表的某个字段的时候,被引用的字段必须具有unique约束

主键和外键的应用

1.定义主键和外键主要是为了维护关系数据库的完整性
主键是能确定一条记录的唯一标识。
外键用于与另一张表的关联,是能确定另一张表记录的字段,用于保持数据的一致性
比如:A表中的一个字段,是B表的主键,那他就可以是A表的外键。

主键,外键,索引的区别

1.创建学生表
设id为该表主键

mysql> create table stu(
    -> sname varchar(6),
    -> id  int(10),
    -> scname varchar(10),
    -> primary key (id)
    -> );
Query OK, 0 rows affected (0.01 sec)

2.创建学校表
设置sid为外键 关联学生表的id字段
关键字为 references 表名(字段)

mysql> create table sch(
    -> sid int(10),
    -> sex varchar(5),
    -> foreign key (sid) references stu(id)
    -> );

先往学生表插入几个字段
mysql> insert into stu values ("sxd",123,"qwe");
Query OK, 1 row affected (0.01 sec)

mysql> insert into stu values ("sxd",12,"qwe");
Query OK, 1 row affected (0.00 sec)

mysql> insert into stu values ("sxd",11,"qwe");
Query OK, 1 row affected (0.00 sec)

查询
mysql> select * from stu;
+-------+-----+--------+
| sname | id  | scname |
+-------+-----+--------+
| sxd   | 123 | qwe    |
| sxd   |  12 | qwe    |
| sxd   |  11 | qwe    |
+-------+-----+--------+

查询sch 表 为空值
mysql> select * from sch;
Empty set (0.01 sec)

往sch 插入值
mysql> insert into sch values(111,"ww");
Query OK, 1 row affected (0.00 sec)
mysql> insert into sch values(12,"ww");
Query OK, 1 row affected (0.00 sec)


mysql> select * from sch;
+------+------+
| sid  | sex  |
+------+------+
|   12 | ww   |
|  111 | ww   |
+------+------+
2 rows in set (0.00 sec)


现在