8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
学习准备
安装1
2
3
4
5sudo apt-get install mysql-sever
sudo apt-get install mysql-client
sudo apt install libmysqlclient-dev
登录
安装完成后会出现界面要求输入密码(两次),该密码即为初始登录时root密码1
2
3
4
5
6shell>mysql -u root -p
#-u为用户选项后加用户名
#-p为密码选项表示该用户需要密码回车之后会出现密码输入提示
mysql>
#输入密码正确后进入mysql
linux平台下MySQL安装目录
文件夹文件夹内容/usr/bin客户端和脚本
/usr/sbinmysqld服务器
/var/lib/mysql日志文件和数据库
/usr/share/info信息格式的手册
/usr/share/manUNIX帮助页/
/usr/include/mysql头文件
/usr/lib/mysql库
/usr/share/mysql错误消息、字符集、实例配置文件等
数据库的基本操作查看当前存在的数据库1SHOW DATABASES;
创建数据库1CREATE DATABASE database_name;
查看数据库的定义1SHOW CREATE DATABASE database_name;
删除数据库1DROP DATABASE database_name;
查看数据库支持的引擎1SHOW ENGINES;
数据表的基本操作
选择数据库1USE database_name;
创建数据表1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16CREATE TABLE
(
字段名1, 数据类型 [列级别的约束条件] [默认值],
字段名2, 数据类型 [列级别的约束条件] [默认值],
...
[表级别约束条件]
)
$ eg: $
CREATE TABLE table_name
(
id (11),
name VARCHAR(25),
deptid (11),
salary FLOAT
);
查看所有的表1SHOW TABLES;
使用主键约束
单字段主键
主键又称主码,是表中一列或多列的组合。主键约束($ Primary Key Constraint $)要求主键列的数据唯一,且不为空。主键能够唯一地标示表中的
两种定义方法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21字段名 数据类型 PRIMARY KEY [默认值]
#该方法在定义列的同时指定主键
[CONSTRAINT ] PRIMARY KEY [字段名]
#该方法在定义完所有列后定义主键
$eg:$
CREATE TABLE table_name
(
id (11) PRIMARY KEY,
name VARCHAR(25),
deptid (11),
salary FLOAT
);
CREATE TABLE table_name
(
id (11),
name VARCHAR(25),
deptid INT(11),
salary FLOAT,
PRIMARY KEY(id)
);
多字段联合主键1
2
3
4
5
6
7
8
9
10
11
12PRIMARY KEY [字段1, 字段2..., 字段 n]
$ eg: $
CREATE TABLE table_name
(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptid INT(11),
salary FLOAT,
PRIMARY KEY (name, deptid)
);
使用外键约束
外键的作用是在两个表的数据之间建立链接,可以是一列或多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中的主键的某个值。
外键首先是表中的一个字段,可以不是本表的主键,但是要对应另外一个表中的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。外键的主要作用是保持数据的一致性、完整性
主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表。
从表 (子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表。
创建外键的语法规则:1[CONSTARAINT ] FOREIGN KEY 字段名1 [字段名2, ...] REFERENCES 主键列1 [ ,主键列2,...]
“外键名”为定义的外键约束的名称,一个表中不能有相同名称的外键;
“字段名” 表示子表需要添加外键约束的字段列;
“主表名”表示被子表外键所依赖的表的名称;
“主键列”表示主表中定义的主键列,或者列组合。
$ eg: $1
2
3
4
5
6
7
8CREATE TABLE student_constraint
(
idINT(11) PRIMART KEY,
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
CONSTRAINT con_student_id_deptId FOREIGN KEY(deptId) PEFERENCES student
);
注:关联指的是在关系型数据库中,相关表之间的联系。它是通过相容或相同属性或属性组来表示的。子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配,如果类型不一样,那么创建子表时就会出现错误
1ERROR 1005 (HY000): Can't create table 'database.tablename'(error:150)
使用非空约束
非空约束(Not Null Constraint)指字段不能位空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。
非空约束的语法规则如下:1字段名 数据类型 NOT NULL
使用唯一性约束
唯一性约束(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或几列不出现重复值。
唯一性约束的语法规则不出现重复值。
唯一性约束的语法规则如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19规则1
字段名 数据类型 UNIQUE
# 指定名称唯一
CREATE TABLE table_test
(
id INT(11) PRIOMARY KEY,
name VARCHAR(22) UNIQUE,
location VARCHAR(50)
);
规则2
[CONSTRAINT ] UNIQUE ()
CREATE TABLE table_test
(
id INT(11) PRIMARY KEY,
name VARCHAR(22),
location CARCHAR(50),
CONSTRAINT STH UNIQUE(name)
);
UNIQUE 与PRIMARY KEY的区别是:一个表中可以有多个字段声明为UNIQUE,但只能有一个字段声明位PRIMARY KEY;声明为PRIMARY KEY的列不允许有空值,但是声明UNIQUE的字段允许有空值。
使用默认约束
默认约束(Default Constraint)是指某列的默认值。例如,男性同学较多,性别就可以默认为‘男’。如果插入一条新的记录时没有为这个字段赋值,那么系统会自动为这个字段赋值为‘男’。
语法规则如下:1
2
3
4
5
6
7
8
9字段名 数据类型 DEFAULT 默认值
CREATE TABLE table_test
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
deptId INT(11), DEFAULT 1111,
salary FLOAT
);
设置表的属性值自动增加
在某些时候希望插入新的记录的时候,系统能自动生成字段的主键值。可以通过为表添加AUTO_INCREMENT 关键字来实现。默认的,在MySQL中AUTO_INCREMENT的初始值为1,每新增一条记录,字段值自动加1.一个表中只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT, SMALLINT, INT, BIGINT)等。
设置表的属性值自动增加的语法规则如下:1
2
3
4
5
6
7
8字段名 数据类型 AUTO_INCREMENT
CREATE TABLE table_test
(
id INT(11) PRIMARY KEY AUTO_INCRMENT,
name VARCHAR(25) NOT NULL,
deptId INT(11),
salary FLOAT
);
查看数据表结构
查看表基本结构语句DESCRIBE
DESCRIBE/DESC语句可以查看表的字段信息,包括字段名、字段类型数据、是否为主键、是否有默认值等。语法规则如下::1
2
3
4
5
6DESCRIBE 表名;
#简写:
DESC 表名;
eg:
mysql> desc student;
+————+——————-+———+——-+————-+———-+
| Field | Type | Null | Key | Default | Extra |
+————+——————-+———+——-+————-+———-+
| id | int(11) | YES | | NULL | |
| name | varchar(25) | YES | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
+————+——————-+———+——-+————-+———-+
4 rows in set (0.00 sec)
mysql>
其中,各个字段的含义分别解释如下:
Null:表示该列是否可以存储NULL值
Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE的索引的一部分;MUL表示在列中某个给定值允许出现多次
Default:表示该列是否有默认值,如果有的话是多少
Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT
查看表详细结构
SHOW CREATE TABLE语句可以用来显示创建表时的CREATE TABLE 语句,语法格式如下1
2SHOW CREATE TABLE ;
# 'G'参数能够让结果显示的更加直观
修改数据表
修改表名1ALTER TABLE RENAME [TO] ;
TO为可选参数,使用与否不影响结果
修改字段的数据类型1ALERT TABLE MODIFY
修改字段名1ALERT TABLE CHANGE ;
添加字段1ALERT TABLE ADD [约束条件] [FIRST | AFTER 已存在字段名];
新字段名为需要添加的字段名称;“FIRST”为可选参数,其作用是将新添加的字段设为表的第一个字段;“AFTER”为可选参数,其作用是将新添加的字段添加到“已存在字段名“后面。
注:如果SQL语句没有这两个关键字,默认添加到数据表的最后列。
删除字段1ALTER TABLE DROP ;
修改字段的排列位置1ALTER TABLE MODIFY FIRST|AFTER
更改表的存储引擎1ALTER TABLE ENGINE=;
删除表的外键约束1ALTER TABLE DROP FOREIGN KEY ;
删除数据表
删除没有被关联的表1DROP TABLE [IF EXISTS] 表1,表2, ...表3;
其中,“表n”是要删除的表的名称,后面可以同时删除多个表,只需要将要删除的表名一次写在后面,相互之间用逗号隔开即可。如果要删除的数据表不存在,则MySQL会提示一条错误信息。
参数IF EXISTS用于在删除前判断要删除的表是否存在,加上该参数后,再删除表的时候,如果表不存在,SQL语句可以顺利执行,但是会发出警告。
删除被其他表关联的主表
在数据表存在外键关联的情况下,如果直接删除父表,结果会显示失败。原因是直接删除将破坏表的参照完整性,如果必须要删除,可以先删除与他关联的子表,再删除父表,只是这样同时删除了两个表中的数据。有些情况下可能要保留子表,这时要单独删除父表,只需将关联的表的外键约束条件取消,然后删除父表。
数据类型和运算符
MySQL数据类型
MySQL支持多种数据类型,主要由数值类型,日期/时间类型和字符串类型。数值数据类型:包括整数类型$ TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT$,浮点小数数据类型$ FLOAT,DOUBLE$, 顶点小数类型$ DECIMAL $。
日期/时间类型:包括$ YEAR, TIME, DATE, DATETIME, TIMESTAMP$。
字符串类型:包括 $ CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM, SET$等, 字符串又分为文本字符串和二进制字符串。
整数类型
数值型数据类型主要用来存储数字。MySQL提供了多种数值数据类型,不同的数据类型提供不同的取值范围,可以存储的值范围越大,其所需要的存储空间也会越大。MySQL主要提供的整数类型有$ TINYINT, SMALLINT, MEDIUMINT, INT(INTEGER), BIGINT$,整数类型的属性字段可以添加$ AUTO$_$INCEEMENT$自增约束条件。下表为MySQL的数值类型。