登录MySQL
mysql -u 用户 -p密码 -h 远程地址 -P 端口(远程登录)
常用数据类型
| 类型 | 作用 |
|---|---|
| int | 整型,4个字节 |
| float | 单精度浮点,4字节32位 |
| double | 双精度浮点,8字节64位 |
| char | 固定长度的字符类型 |
| varchar | 可变长度的字符类型 |
| text | 文本 |
| image | 图片 |
| decimal (5,2) | 5个有效长度数字,小数点后面有2位 |
char和varchar区别
CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
CHAR(4)和VARCHAR(4)的不同
- CHAR(4):固定4个字节
- VARCHAR(4):可变长度,但一定会占一个字节(结束符),最多占5个字节(4个字节+结束符)
| 值 | CHAR(4) | 存储需求 | VARCHAR(4) | 存储需求 |
|---|---|---|---|---|
| '' | ' ' | 4个字节 | '' | 1个字节 |
| 'ab' | 'ab ' | 4个字节 | 'ab' | 3个字节 |
| 'abcd' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
| 'abcdefg' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
- varchar比char节省磁盘空间
- 但varchar类型的数据读写速度比char慢,因为char是连续的磁盘空间,而varchar在多次增删改查中会产生一些磁盘空间碎片
查看数据库结构
-
查看当前服务器中的数据库
SHOW DATABASES;(大小写不区分,分号";”表示结束) -
查看数据库中包含的表
USE数据库名;
SHOW TABLES;或者通过from查看指定数据库中的所有表
-
查看表的结构(字段)
-
方法一:以表格格式展示表结构
USE数据库名;
DESCRIBE [数据库名.] 表名;
可缩写成:DESC表名;
-
方法二:以SQL命令格式展示表结构,还能显示表的其它信息
show create table 表名;
-
SQL语句
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
SQL语言分类
- DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
- DML:数据操纵语言,用于对表中的数据进行管理
- DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
- DCL:数据控制语言,用于设置或者更改数据库用户或角色权限
创建及删除数据库和表
创建数据库
创建新的数据库:CREATE DATABASE 数据库名;
创建表
创建新的表:CREATE TABLE 表名(字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY(主键名)]);
- 主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
删除表
删除指定的数据表:DROP TABLE [数据库名.]表名;(如不用USE进入库中,则需加上数据库名。删除后,表内数据也会没有)
- 不移动的情况下,删除表
删除数据库
删除指定的数据库:DROP DATABASE 数据库名;(删除后,数据库内的表也没有)
对表中数据进行操作
增加
在表中插入记录:insert into 表名(字段1,字段2,...) values(内容1,内容2,...);
-
如果插入字段和表格属性一一对应,表明后可以不加字段
-
也可选取字段插入数据,但设了主键的和not null的不能为空
-
批量插入记录:
insert into 表名(字段1,字段2,...) values(内容1,内容2,...),(内容1,内容2,...),...;
查看
查看表内记录:select 字段1,字段3... from 表名;
-
\G:横向显示显示不下(由于属性太多内容太多,显示屏单行放置不下,就会换行显示),为方便查看,进行纵向输出。
-
limit:只显示其中连续的若干行
-
显示最前面若干行
-
未从最前面开始
-
-
where:按条件查询显示
-
单个条件
-
多个条件
-
and:且
-
or:或
-
-
修改
修改更新表内记录: UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
- 注:如果不使用where继续过滤,则会改变所有记录
- 所以需要带上where进行选择(一般根据主键选择修改)
删除
删除表内记录:DELETE FROM 表名 [WHERE 条件表达式];
- 如果不加WHERE,那就删除所有
如果删除掉表,那么其中的记录也会删除。如果删除掉数据库,内部的表和表内的记录也会删除。
修改表名和表结构
修改表名
ALTER TABLE 旧表名 RENAME 新表名;
扩展表结构
增加字段:ALTER TABLE 表名 ADD 字段名 数据类型 [default '默认值'];
-
default:表示此字段为默认值,可与NOT NULL配合使用
- 空值和NULL值
- 空值和NULL值
修改字段名
修改列名,添加唯一键:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];
- CHANGE:可修改字段名、数据类型、约束等所有项。
- unique key:唯一键,数据内容不可重复。
删除字段
ALTER TABLE 表名 DROP 字段名;
MySQL的约束
约束的类型
- 主键约束(primary key) PK
- 自增长约束(auto_increment)
- 非空约束(not null)
- 唯一性约束(unique)
- 默认值约束(default)
- 零填充约束(zerofill)
- 外键约束(foreign key)FK
主键primary key 和 唯一键unique key
共同点:字段的值都是不允许有重复
不同点:
- 自定义的表中只能有一个主键,但是可以有多个唯一键。(系统的表中可以有多个主键)
- 主键字段中不允许有null值,唯一键允许有null值。
示例
use school;
create table if not exists info (
id int(4) zerofill primary key auto_increment, #指定主键的另一种方式
name varchar(10) not null default '匿名',
cardid int(18) not null unique key,
hobby varchar (50));
- if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
- int(4) zerofill:表示若数值不满4位数,则前面用"0"填充,例0001
- auto_increment:表示此字段为自增长字段,即每条记录在最大记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键:如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
- unique key:表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键,但是一张表中可以有多个唯一键
- not null:表示此字段不允许为NULL