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)
注意 :每张表的主键只能有一个
表的约束
约束 : 对每个字段设置一定的限制条件
- 非空约束 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)
主键约束
- 表设计时一定要有主键
- 表中的某个字段添加主键约束后,该字段为主键约束。主键字段中出现的每一个数据都称为主键值。
- 一张表应该有主键字段,如果没有,则该表无效。
- 主键值是挡墙数据的唯一标识,是当前数据的身份证号。主键值是挡墙数据的唯一标识,是当前数据的身份证号。
- 即使表中两行记录相关数据相同,但由于主键值不同,所以也认为是两行不同的数据
- 无论是单一主键还是复合主键,一张表的主键只能有一个(约束只能有一个,但可以作用到好几个字段)
- 单一主键 :给一个字段添加主键约束。 复合主键 :给多个字段联合添加一个主键约束(还只能用表极约束)
单一主键 (列级定义)
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)
现在
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- CVE-2018-8174 IE浏览器远程代码执行漏洞
- MFS传给CS sessions会话
- windows利用Hashcat字典破解WiFi密码
- tensorflow 使用CPU而不使用GPU的问题解决
- Python图像灰度变换及图像数组操作
- 典型算法的Python实现
- Spring是如何解决循环依赖的
- Python将两个列表转换为字典
- 三、基于promise封装属于自己的Ajax库
- 数据分析 常见异常及解决办法(一)
- Python数据分析实战(2)使用Pandas进行数据分析
- 【redis】redis内存管理、淘汰机制、内存优化
- 如何防止网站被扒的解决方法!
- 【python-面试题53-循环排序】寻找缺失的数
- 【python-leetcode42-区间合并】区间列表的交集