MySQL学习笔记
登录
mysql -h 主机名 -u 用户名 -p
-h
为指定主机名称,本机登录可以省略-u
为指定登录用户名,本机为默认为root
-p
用于告诉服务器将会使用密码登录,若没密码可以省略
本机登录示例
mysql -u root -p
之后会弹出输入密码,输入完回车即可
Enter password:
常用管理指令
-
use 数据库名:
选择要操作的
MySQL
数据库,使用该命令后所有操作都只对该数据库执行mysql> use ginsql; Database changed
-
show databases:
列出
MySQL
数据库管理系统的数据库列表mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | ginsql | | cdcol | | mysql | | onethink | | performance_schema | | phpmyadmin | | test | | wecenter | | wordpress | +--------------------+ 10 rows in set (0.02 sec)
-
show tables:
列出指定数据库的所有表,使用之前需要使用
use
指定对应数据库mysql> use ginsql Database changed mysql> show tables; +------------------+ | Tables_in_ginsql | +------------------+ | student_tb1 | | student_tb2 | | student_tb3 | +------------------+ 3 rows in set (0.00 sec)
-
show columns from:
显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
mysql> show columns from student_tb1 +-----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+-------+ | student_id | int(11) | NO | PRI | NULL | | | student_name | varchar(255) | YES | | NULL | | | student_sex | varchar(255) | YES | | NULL | | | submission_date | date | YES | | NULL | | +-----------------+--------------+------+-----+---------+-------+
创建数据库
使用 create
命令创建
create database 数据库名;
删除数据库
普通用户的删除权限需要设定,一般使用 root
用户操作。
并且删除数据库需要谨慎,删除之后所有数据会消失
我们有两种删除方法
-
drop 命令删除
drop database 数据库名;
例如
drop database ginsql;
-
使用 mysqladmin 删除数据库
使用
mysqladmin
命令是在终端使用管理员权限删除对应数据库[root@host]# mysqladmin -u root -p drop ginsql Enter password:
执行上述操作后会弹出提示框,确认是否要删除该数据库
Dropping the database is potentially a very bad thing to do. Any data stored in the database will be destroyed. Do you really want to drop the 'ginsql' database [y/N] y Database "ginsql" dropped
选择数据库
选择数据库即常用指令 use
mysql> use 数据库名;
Database changed
数据类型
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
数值类型
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 Bytes | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 Bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 Bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 Bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 Bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 Bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 浮点数值 |
DOUBLE | 8 Bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度 浮点数值 |
DECIMAL | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
TIMESTAMP类型有专有的自动更新特性,将在后面描述。
类型 | 大小 ( bytes) | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | ‘-838:59:59’/‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
字符串类型
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串 |
VARCHAR | 0-65535 bytes | 变长字符串 |
TINYBLOB | 0-255 bytes | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
TEXT | 0-65 535 bytes | 长文本数据 |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
创建数据表
创建数据表包含三个基本信息:
- 表名
- 表字段名
- 定义每个表字段
create table table_name (column_name column_type);
以 ginsql
为例子
create table test(
id int primary key auto_increment,
name varchar(12) not null,
age int default 1
);
- 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
- AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
- PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
删除数据库
使用 drop table
mysql> use ginsql;
Database changed
mysql> drop table test;
Query ok, 0 rows affected (0.8 sec)
插入数据
基本语法
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
若要插入多条数据即将 values
后的数据值写多行
VALUES
(values1, values2, values3),
(valuesb1, valuesb2, valuesb3),
...
(valuesz1, valuesz2,valuesz3);
查询数据
使用 select
语句来执行
基础语法
select column_name,column_name from table_name
[where Clause]
[Limit N][offset m]
- 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
- SELECT 命令可以读取一条或者多条记录。
- 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
- 你可以使用 WHERE 语句来包含任何条件。
- 你可以使用 LIMIT 属性来设定返回的记录数。
- 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
读取所有数据
select * from test
where 子句
在 select
查询语句中,where可以用来判断条件
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
- 查询语句中你可以使用一个或者多个表,表之间使用逗号**,** 分割,并使用WHERE语句来设定查询条件。
- 你可以在 WHERE 子句中指定任何条件。
- 你可以使用 AND 或者 OR 指定一个或多个条件。
- WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
- WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
读取对应字段
select * from test where name = 'David';
UPDATE 更新
基本语法
update table_name set field1=new_value1, field2=new_value2
[where Clause];
示例:
更改 id
为2的字段值
update test set name = "Tom", age = "13" where id = 2;
DELETE 语句
基本语法
delete from table_name [where Clause];
- 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
- 你可以在 WHERE 子句中指定任何条件
- 您可以在单个表中一次性删除记录。
示例:
删除 id
为 3 的记录
delete from test where id = 3;