数据表的基本操作【美高梅网站是多少】,MySq
分类:美高梅-数据

Date日期

用于存储日期和时间

分组后只能与与分组相关的结果级打印;

更新数据

UPDATE tbl_name  SET 字段名称=值,...... [WHERE 条件] [ORDER BY 字段名称] [LIMIT 限制条件]

语法规则:字段名 数据类型 not null

例:定义数据表tb_employee6,指定员工的名称不能为空

mysql> create table tb_employee6(id int(11)primary key,name varchar(25)not null,deptld int(11),salary float);

 

默认à定义

这个选项代表,填充数据时如果该字段为空值时,所使用的默认值。

保证每行所代表的实体能互相区别,不能存两条一抹一样的

条件判断函数

名称 描述
IF(EXPR,V1,V2) 如果EXPR成立,返回V1,否则V2
IFNULL(V1,V2) 如果V1 不为空,显示V1的值;否则V2
CASE WHEN expr1 THEN v1 [WHEN expr2 THEN v2 ] [ ELSE vn] END CASE表示函数开始,END表示函数结束。如果表达式expr1成立时,返回v1.如果表达式expr2成立时,返回v2.以此类推,最后遇到ELSE时,返回vn的值。

10.修改数据表:修改数据库中已经存在的数据表结构。常用的修改表的操作有:修改表名,修改字段数据类型或字段名,增加和删除字段,修改字段的排列位置,更改表的存储引擎,删除表的外键约束等。

(1)修改表名

alter table 旧表名 rename 新表名
例:mysql> alter table tb_dept3 rename tb_deptment3;

(2)修改字段数据类型

alter table 表名 modify 字段名 数据类型
例:mysql> alter table tb_dept1 modify name varchar(30);

(3)添加字段

alter table 表名 add 新字段名 数据类型
例1:mysql> alter table tb_dept1 add managerld int(20);(没有完整性约束条件的字段)
例2:mysql> alter table tb_dept1 add column1 varchar(12) not null;(添加有约束条件)
例3:mysql> alter table tb_dept1 add column2 int(11) first;(添加到第一列)
例4:mysql> alter table tb_dept1 add column3 int(11) after name;(添加到name后一列)

(4)删除字段

alter table 表名 drop 字段名
例:mysql> alter table tb_dept1 drop column3;

(5)修改字段排序

alter table 表名 modify 字段1 数据类型 first after 字段2
例1:mysql> alter table tb_dept1 modify id int(11) first;
例2:mysql> alter table tb_dept1 modify column2 int(11) after column1;

(6)更改表的数据引擎

alter table 表名 engine=更改后的存储引擎
例:mysql> alter table tb_dept1 engine=innodb;

(7)删除表的外键约束

alter table 表名 drop foreign key 外键约束名

(8)修改字段名

mysql> alter table customers change c_contact c_phone varchar(50);

 

示例:

SELECT * FROM student WHERE sName LIKE '王%'

 

查找所有姓王的学生

LIKE关键字在这里代表模糊查询,不是像=那样必须完全匹配。

美高梅4858官方网站, 

SELECT * FROM student WHERE sName LIKE '%五'

 

查找以“五”字结尾的数据

 

SELECT * FROM student WHERE sName LIKE '%老%'

 

查找中间包含“老”字的字符。

注意:即使数据的开头或结尾为空,依然可以匹配到数据,因为%不但代表任意个数的任意字符,它同样也可以代表没有字符。

删;先删从表在删主表

查看表结构及创建信息

DESC tbl_name
DESCRIBE tbl_name
SHOW COLUMNS FROM tbl_name
SHOW CREATE TABLE tbl_name

4.非空约束(not null):是指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

更改表结构:删除字段

alter table student drop column sScore;

 

其中:

drop column 代表删除字段操作

sScore 要被删除的字段名

student 是表名

3,外键

删除外键

(ALTER TABLE tbl_name DROP FOREIGN KEY)

5.唯一性约束:要求该列唯一,允许为空,但只能出现一个空值。唯一性约束可以确保一列或者多列都不能出现重复值。

(1)在定义完列之后直接指定唯一约束

语法规则:字段名 数据类型 unique

mysql> create table tb_dept2(id int(11)primary key,name varchar(22)unique,location varchar(50));

(2)在定义完所有列之后指定唯一约束

语法规则:constraint 约束名 unique(字段名)

mysql> create table tb_dept3(id int(11)primary key,name varchar(22),location varchar(50),constraint sth unique(name));

unique和primary key的区别:一个表中可以有多个字段声明为unique,但只能有一个primary key声明;声明为primary key的列不允许有空值,但是声明为unique的字段允许空值的存在。

 

join关键字 – 链表

join关键字用于在数据库中同时查询多张存在关联关系的数据表。

 

3,用UPDATE直接编辑user表

逻辑运算符

符号 形式 作用
&& 或 AND 并且
||或 OR 或者
! 或 NOT 取反
XOR 异或 不同为真

6.默认约束:指定某列的默认值。如男性同学较多,性别就可以默认为“男”。如果插入一条新的记录时没有为这个字段赋值,那么系统自动会为这个字段赋值为男。

语法规则:字段名 数据类型 default 默认值

例:mysql> create table tb_employee7(id int(11)primary key,name varchar(25)not null,deptld int(11)default 1111,salary float);

 

小练习:

请同学把所有SQL都写到一个SQL文件中,按“班级-姓名(可以是拼音).SQL”的方式保存

某学校的学生管理数据库中有学生表(T_STUDENT)、班级表(T_CLASS),表结构及存储的数据如下表所示:

学生表(T_STUDENT):

STU_ID

(int, 主键,学号)

STU_NAME

(nvarchar(10),姓名)

STU_AGE

(int,年龄)

STU_CID

(int,外键,班级号)

1

张三

18

1

2

钱四

16

2

3

王玲

17

3

5

李飞

19

4

9

赵四

18

5

10

李可

20

6

11

张飞

18

7

12

周瑜

16

8

13

王亮

17

7

14

董庆

19

1

15

赵龙

18

2

16

李丽

20

3

班级表(T_CLASS):

CLS_ID

(int, 主键, 班级号)

CLS_JOB

(nvarchar(50), 专业名)

CLS_DEPART

(nvarchar(50), 系名)

CLS_DATE

(int, 入学年份)

1

软件

计算机

2013

2

微电子

计算机

2013

3

无机化学

化学

2014

4

高分子化学

化学

2012

5

统计数学

数学

2015

6

现代语言

中文

2016

7

国际贸易

经济

2013

8

国际金融

经济

2014

 

用 SQL 语言完成以下功能

  1. 建库、建表,要求添加主键
  2. 插入指定的数据
  3. 找出所有年龄小于19岁的学生学号、姓名、年龄。
  4. 学生张三转到化学系 111 班,请更新相关的表。
  5. 删除班级表的主键这一列。
  6. 将学生表改名为T_STD
  7. 为班级表添加字段CLS_COUNT人数字段
  8. 为班级表添加主键。
  9. 删除班级表

 

 

mysql_4_聚合函数

select avg(all 求哪一列的平均值) from 表名称

约束条件

一个表只能有一个主键(PRIMATY KEY),但是能够有多个唯一(UNIQUE KEY),唯一的字段的值不允许出现重复,但是NULL值不算做重复的值

  • PRIMARY KEY 主键,PRIMARY可省略 (注意:PRIMARY KEY(a,b,c,...) 来定义一个主键时,由a,b,c,...所有的值才能确定一个主键,即一个表包括a,b,c...等字段,其中单独的a,b,c字段相等,是可以的,但不能全部相等,全部相等表明主键相等,不可插入。)
  • AUTO_INCREMENT 自增,需要和主键(PRIMARY KEY)搭配使用。可在创建表时自定义从某个数开始,如CREATE TABLE tbl_name(id INT key AUTO_INCREMENT,......)AUTO_INCREMENT=数值,表示内部自增字段从此数值开始。(也可通过ALTER TABLE tbl_name AUTO_INCREMENT=数值修改)
  • FOREIGN KEY 外键
  • NOT NULL 非空
  • UNIQUE KEY 唯一,KEY 可省略
  • DEFAULT 默认值 插入数据时可使用DEFAULT

2.主键约束:主键又称主码,是表中一列或多列的组合。主键约束要求主键列的数据唯一,并且不能为空。主键能够唯一标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询速度。主键分为两种类型:单字段主键和多字段联合主键。

(1)单字段主键

mysql> create table tb_employee1(id int(11)primary key,name varchar(25),depld int(11),salary float);
mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float,primary key(id));

(2)多字段联合主键

mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float,primary key(id,name));

 

方式一:select同时from多张多

在select的from语句后同时写入多张表的名字,然后在where条件语句中写入多表之间的连接条件。

 

示例:

SELECT * FROM student,score WHERE student.sid = score.sid

 

注意:内连接之中,要分主表和附表,附表只是用于对主表所缺少的内容进行补充,比如上例中,主表是学生成绩,student学生只是在补充主表中缺少的学生姓名等数据。

SELECT

student.sName as '姓名',

   student.sAge as '年龄',

   score.sProject as '科目',

   score.score+10 as '成绩',

   score.sid as '编号'

FROM student,score

WHERE student.sid = score.sid

 

 

在多表查询的时候,为了避免由于字段名重复而产生错误,我们可以在字段名前面加上表名,以示区分。

 

and 并且

查看默认的存储引擎

SHOW VARIABLES LIKE '%storage_engine%'

3.外键约束:外键用来在两个表之间建立联系,它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性,一个表的外键可以是空值,若不为空值,则每一个外键必须等于另一个表中主键的某个值。

下面介绍几个概念。是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的主键。例如:部分表的主键id,在表tb中有一个键deptld与这个id关联。

主表(父表):对于两个具有关联关系的表而言,相关字段中主键所在的那个表就是主表。

从表(自表):对于两个具有关联关系的表而言,相关字段中外键所在的那个表就是从表。

例:定义数据表tb_employee5,并且在该表中创建外键约束

创建一个部门表tb_dept1,表结构如下表所示

字段名称

数据类型

备注

id

int(11)

部门编号

name

varchar(22)

部门名称

location

varchar(50)

部门位置

mysql> create table tb_dept1(id int(11)primary key,name varchar(22),location varchar(50));
定义数据表tb_employee5,让它的deptld字段作为外键关联到tb_dept1的主键id:
mysql> create table tb_employee5(id int(11)primary key,name varchar(25),deptld int(11),salary float,constraint fk_emp_dept1 foreign key(deptld) references tb_dept1(id));

 

数据库与数据操作

1,修改某行的数据

日期时间函数

名称 描述
CURDATE(),CURRENT_DATE() 返回当前日期
CURTIME(),CURRENT_TIME() 返回当前时间
NOW() 返回当前日期时间
MONTH(D) 返回日期中月份的值
MONTHNAME(D) 返回日期中月份的名字
DAYNAME(D) 返回日期中的星期几
DAYOFWEEK(D) 返回一周内的第几天,1代表星期日
WEEKDAY(D) 返回日期是星期几,0代表星期一
WEEK(D) 一年中的多少个星期
YEAR(D) 返回日期中年份的值
HOUR(T) 返回时间中的小时
MINUTE(T) 返回时间中的分钟数
SECOND(T) 返回时间中的秒数
DATEDIFF(D1,D2) 返回D1,D2的间隔天数

8.查看数据表的结构

查看表基本结构:describe 表名 或 desc 表名

mysql> desc tb_employee8;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | int(11)     | NO   | PRI | NULL    | auto_increment |
| name   | varchar(25) | NO   |     | NULL    |                |
| deptld | int(11)     | YES  |     | NULL    |                |
| salary | float       | YES  |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+

(1)NULL:表示该列是否可以存储null值

(2)key:表示该列是否已经编制索引。pri为该列主键的一部分;uni表示该列是unique索引的一部分;mul表示在列中某个给定值允许出现多次。

 

字段

数据字段,就是数据表中的列。

每一个字段都需要指定一个名称,用来说明该列数据的作用,就叫作字段名。

use 库名称;

子查询

9.查看表详细结构

语法规则:show create table 表名G

mysql> show create table tb_employee8G
*************************** 1. row ***************************
       Table: tb_employee8
Create Table: CREATE TABLE `tb_employee8` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  `deptld` int(11) DEFAULT NULL,
  `salary` float DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

 

关系型数据库

就是以行与列构成的二维数据表的形式,用来存储数据的,并且将多张数据表存储在一个单元中的存储形式,就称为关系型数据库。

从classes表中查询所有的class_name 插入到className表中的(class_name)字段

查询记录

SELECT select_expr[,select_expr,...]
[ 
    FROM table_reference
    [WHERE 条件]
    [GROUP BY {col_name | position } [ ASC | DESC], ... 分组]
    [HAVING 条件 对分组结果进行二次筛选]
    [ORDER BY {col_name | position } [ ASC | DESC], ... 排序]
    [LIMIT 限制显示条数]
]

7.设置数据表的属性值自动增加:在数据库应用中,经常希望在每次插入新数据时,系统会自动生成字段的主键值。可以为表主键添加auto_increment关键字来实现。在mysql中,默认情况下auto_increment初始值为1,每新增一条记录,字段自动加1.一个表只能有一个字段使用auto_increment约束,且每个字段必须为主键的一部分。auto_increment约束的字段可以是任何整数类型(tinyint/samllint/int/bigint)。

语法规则:字段名 数据类型 auto_increment

例:定义数据表tb_employee8,指定员工标号自动增加

mysql> create table tb_employee8(id int(11)primary key auto_increment,name varchar(25)not null,deptld int(11),salary float);

 

mysql> insert into tb_employee8(name,salary) values('lucy',1000),('lii',800),('cai',20000);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from tb_employee8;
+----+------+--------+--------+
| id | name | deptld | salary |
+----+------+--------+--------+
|  1 | lucy |   NULL |   1000 |
|  2 | lii  |   NULL |    800 |
|  3 | cai  |   NULL |  20000 |
+----+------+--------+--------+
3 rows in set (0.00 sec)

美高梅网站是多少, 

字符串数据类型

字符类型可以存储任何值,甚至是二进制形式的图像、声音、视频。

CHAR[M] 代表M字节的字符。

varChar 常用的字符存储格式,使用时需要指定最大内容长度。

1,添加字段;

内连接查询

  1. JOIN | CROSS JOIN | INNER JOIN
  2. 通过ON 连接条件
  3. 显示两个表中符合连接条件的记录

注意:三张表或者三张表以上查询可以直接加入更多的JOIN ...ON ...来连接多张表,注意找准表之间的连接条件

例如:

SELECT 
    user_info.id, user_info.name, city_info.pro_name
FROM
    user_info
        JOIN
    city_info ON user_info.pro_id = city_info.pro_id;

1.创建表:之前需要use database database_name 然后create table 表名();

例:创建员工表tb_employee1,结构如下表所示

字段名称

数据类型

备注

id

int(11)

员工编号

name

varchar(25)

员工名称

depld

int(11)

所在部门编号

salary

float

工资

mysql> create database aa;
mysql> use aa;
mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float);

 

insert插入数据

向指定的数据表的指定字段插入一条记录。

把查出来的结果当成一张表,再查这张表的数据;不常用,效率低

在已存在的表上创建索引

(CREATE [UNIQUE | FULLTEXT | SPATIAL ] INDEX  索引名称 ON 表名 {字段名称[(长度)]  [ASC|DESC] ) })

或者

(ALTER TABLE tbl_name ADD [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名称(字段名称[(长度)] [ASC|DESC]) )

11.删除数据表

drop table 表1 表2 。。。

删除被其他表关联的主表:先删除字表,再删除主表(或取消外键约束,删除主表)

在当前数据库中创建数据表

注意,在创建之前必须选择当前数据库。

格式:create table 表名(字段1 数据类型,字段2 数据类型,……)

示例:

create table stdInfo(

sName varchar(20),

sAge int,

sSex varchar(5)

);

 

3,删除外键

存储引擎

记录

就是数据表中行,一横行数据我们就称为一条数据记录。

通常而言,每条数据记录都有一个ID号,我们可以把这个id理解成是excel中的行号,用来对每条记录进行区分与标记。

mysql> update user set password=password('123') where

什么是索引

  • 索引由数据库中一列或者多列组成,其作用是提高对表中数据的查询速度
  • 索引的优点是可以提高检索数据的速度
  • 索引的缺点是创建和维护索引需要耗费时间
  • 索引可以提高查询速度,减慢写入速度

更改表结构:添加自增主键

alter table product

 add pid int

 not null

 primary key

 auto_increment

 first;

 

其中

primary key 设置新字段为主键

first 将新字段放在其他字段的前面,处于第一位。

 

where a.sems_role_rid=b.rid and a.udeptid=c.deptid

什么是链接查询

连接查询是将两个或者两个以上的表按照某个条件连接起来,从中选取需要的数据。连接查询是同时查询两个或者两个以上的表时使用的。当不同的表中存在相同意义的字段时,可通过该字段连接这几个表。

where子句

定义一个查询条件,然后在查询过程中用这个条件来筛选符合条件的记录。

 

SELECT * FROM product WHERE pPrice >=1000

查询价格大于等于1000的产品

SELECT * FROM product WHERE pPrice <>3000

SELECT * FROM product WHERE pPrice !=3000

查询价格不等于3000的产品

SELECT * FROM product WHERE pName = '中兴z954'

 

查询产品名称是中兴z954的产品信息(在mysql中双引号与单引号都表示字符串,但是推荐使用单引号,因为我们将来要学习的mssql server 中字符串用单引号表示)

2,f_表示字段名;表格 英文 table

其他

方法二:inner join

使用inner join同样可以完成上例中的功能,而且主表与附表、连接条件一目了然。INNER JOIN子句的前面是主表,后面是附表,ON后面是表连接的条件。

 

SELECT

   student.sName as '姓名',

   student.sAge as '年龄',

   score.sProject as '科目',

   score.score as '成绩',

   score.sid as '编号'

FROM score INNER JOIN student

ON score.sid = student.sid

 

 

注意:省略INNER直接写JOIN关键字,也是内部连接。

 

*;表示全部

注释

  • 以‘-- ’ 为前缀
  • 以'#' 为前缀
  • 字段注释通过COMMENT '.....'进行注释

小练习:

1、 创建一张员工数据表,employee,包含字段:eId(标准整数,主键、自增)、姓名eName(varchar,50)、年龄eAge(tinyInt,无符号)、工号eNum(smallInt,不足的位数用0填充)、学历(枚举:初中~研究生)、性别(枚举:男,女)、出生日期(DateTime)、基本工资(Float,默认:1300)、自我介绍text。然后输入五名员工的信息。

 

 

T-SQL语言基础之增删改查

数据与索引的更新是同步的,如果全部数据都有索引就会降低效率;

创建索引

mysql数据库的备份与恢复

3,数据库种类;关系型,非关系型,层次型,网状型

查看数据库的定义

SHOW CREATE  { DATABASE | SCHEMA } db_name

查看数据库列表

show Databases

3,字符

列出指定字段

INSERT [INTO] tbl_name (字段名称1,......) VALUE | VALUES (值1,......)

数值类型

TinyInt 非常小的整数存储格式,1字节(8位的二进制数),它的取值范围是:不带符号时0 ~ 255,带正负号时-128 ~ 127

SmallInt 小整数,2字节,不带符号时0~65535,带正负号时-32768~32767

MediumInt 中等整数,3字节,不带符号时0~16777215,带正负号时-8388608 ~ 8388607

Int 标准整数,4字节,不带符号时0 ~ 4294967295 ,带正负号时-2147483648 ~ 2147483647

BigInt 大整数,8字节,不带符号时0~18446744073709551615

 

Float 单精度浮点数,4字节,最小值,正负1.175494351E-58(1.175494351*10-58)最大值,正负3.102823466E+38(3.102823466E*1038)

Double 双精度浮点数,8字节,最小值,正负2.22507385072014E-308,最大值:正负1.17976931348623157E+308。

 

Decimal 以字符串形式存储浮点数。它的取值范围不是固定的,取决于用户指定的长度。

decimal(m,b);用户自定义精度的浮点型数据 (m长度,b精度)以特别高的精度存储小数数据.

JSON类型(ver5.7新增)

什么是数据库

数据库顾名思义,就是用来存储数据的工具,用一个比例形象的例子来比喻,就是Excel,一个Excel文件就可以看成是一个数据库。

2,avg(); 平均值;

删除默认值

ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT

如何设置一个字段为自增

1、在创建表或在修改字段结构的时候,设置字段的数据类型为int,然后选中auto_increment上的勾。

2、当插入一条数据时,不要手动填写主键字段。

3、主键生成的数字绝对不会重复,即使记录被删除。

afloat;4字节 单精度浮点型数据 存储小数数据

运算符

语法:

delete from 表名 where 条件

虽然where是一个可选参数,但是通常情况下都需要写where条件,如果不写就是删除整张表的所有行。

in() 只取()中的字符;(1,2,3)只能取123

添加唯一

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [索引名称] (字段名称,...)

delete删除

根据条件删除指定的记录

select 列 from 表 where 列=all (select 列 from 表1 where 列=数据);

系统信息函数

名称 描述
VERSIOn() 返回数据库版本号
CONNECTION_ID() 返回数据库连接数
DATABASE(),SCHEMA() 返回当前数据库名
USER(),SYSTEM_USER 返回当前用户
CURRENT_USER() 返回当前用户
CHARSET(s) 返回字符串s 的字符集
COLLATION(s) 返回字符串s 的检验字符集
LAST_INSERT_ID() 返回最近生成的AUTO_INCREMENT的值

as关键字

用于对字段段取一个别名

SELECT sName as '姓名',sAge as '年龄',sAddress as '地址' FROM student

 

 

--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。 

查看MYSQL支持的存储引擎

SHOW ENGINES

示例:

UPDATE userinfo SET uName = '江老怪' WHERE uid = 1

 

修改第1条记录的姓名为江老怪

UPDATE userinfo SET uName = '江老怪'

 

修改所有行的用户名为江老怪

UPDATE userinfo

SET uName = '小二黑',uPhone='111111',uIDCard='11111111' WHERE uid = 3

 

 

1,基本命令

查询数据操作(DQL)

COUNT 统计个数

用于统计(按条件)查询出聚合后的记录或查询的结果一共有多少条。示例:

SELECT COUNT(*) FROM student //统计表中一共有多少条记录

SELECT COUNT(1) FROM student //同上,性能更强。

SELECT COUNT(1) FROM student WHERE sAge>17 //统计符合条件的记录总数

SELECT COUNT(1),sSex FROM student GROUP BY sSex

//将GROUP BY与COUNT两个函数结合起来使用,按性别进行分组统计。

 

7,查看当前用户;select user();

删除主键

ALTER TABLE tbl_name DROP PRIMARY KEY

如何设置主键

1、在创建表或在修改字段结构的时候,在主键字段的”索引”下拉菜单中选择“primary”。(一张表只允许设置一个主键,通常它是int自增的。)

 

--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。 

字符串类型

数据类型 存储需求
CHAR(M) M个字节,0<=M<=255
VARCHAR(M) L+1个字节,L<=M且0<=M<=65535
TINYTEXT L+1个字节,L<2^8
TEXT L+2个字节,L<2^16
MEDIUMTEXT L+3个字节,L<2^24
LONGTEXT L+4个字节,L<2^32
ENUM('Value1','Value2',......) 1或2个字节,取决于枚举值的个数(最多65535个值)
SET('Value1','Value2',......) 1,2,3,4或8个字节,取决于SET成员的数目(最多64个成员)

新建数据库

1、 要指定数据库的名称。

2、 通常选择utf8_unicode_ci字符集,在只有中文的情况下,可以选择gbk_chinese_ic或gb2312_chinese_ci 。

 

3,增加全部数据

连接查询

重命名数据表

rename table student to sInfo;

 

注意:to前面是修改前的原表名,to后面是修改后的新表名。

mysql> update user set password=password('123') where

打开数据库

USE db_name

逻辑或or

SELECT * FROM product

WHERE pPrice <800 OR pId >6

 

本机ip;127.0.0.1

字符串函数

名称 描述
CHAR_LENGTH(x) 返回字符串字符数
LENGTH(x) 返回字符串长度
CONCAT(s1,s2,...) 合并字符串
CONCAT_WS(x,s1,s2,...) 以指定分隔符连接连接字符串
UPPER(x)/UCASE(x) 将字符串转化为大写
LOWER(x)/LCASE(x) 将字符串转化为小写
LEFT(S,N)/RIGHT(S,N) 返回字符串的前/后N个字符
LPAD(S1,LEN,S2)/RPAD(s1,LEN,s2) 将字符串s1用s2 填充到指定的LEN
LTRIM(s)/RTRIM(s)/TRIM(s) 去掉字符串空格
TRIM(s1 FROM s) 去掉字符串S中结尾处和开始处的s1
REPEAT(S,N) 重复字符串的指定次数
SPACE(N) 返回N个空格
REPLACE(s,s1,s2) 从字符串s中搜索s1,替换s2
STRCMP(s1,s2) 比较字符串,>=<分别返回1,0,-1
SUBSTRING(S,N,LEN) 截取字符串
REVERSE(S) 反转字符串
ELT(N,S1,S2) 返回指定位置的字符串

多表查询

select 列 from 表 where 列=any (select 列 from 表1where 列=数据);

运算符的优先级

优先级 运算符 优先级 运算符
1 ! 8 |
2 ~ 9 =,<=>,>>=,<,<=,!=,<>,LIKE,IN,IS NULL,REGEXP
3 ^ 10 BETWEEN AND,CASE,THEN,WHEN,ELSE
4 *,/,DIV,%,MOD 11 NOT
5 +,- 12 &&,AND
6 >>,<< 13 ||,OR,XOR
7 & 14 ;=

注意: 可以使用()改变优先级

存储大容量的文本

TinyBlob ,blob,TinyText,text

前两个是代表二进制字符串,后两个是代表非二进制字符串,都可以存储大量的文本信息。

MediumBlob,MediumText

LongBlob,LongText

left join t_group on pk_teamid=fk_groupid

添加主键

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (字段名称,...) 

GROUP_CONCAT分组连接

将一张表中的多行记录中的指定的字段值,连接成一个字符串。每个值之间以逗号进行分隔。通常用于得到聚合后的每个分组中包谷的成员。

SELECT GROUP_CONCAT( sName ) FROM student

//连接所有学生的姓名

SELECT GROUP_CONCAT( sName ) FROM student WHERE sAge>18

//连接所有18岁以上的学生姓名

SELECT GROUP_CONCAT(sName),sSex FROM student GROUP BY sSex

//得到所有男生和女生的名单

 

 

1,索引

将查询结果插入到表中

INSERT [INTO] tbl_name   [(字段名称1,......)]  SELECT 字段名称 FROM tbl_name  [WHERE 条件]

逻辑非not

SELECT * FROM product

WHERE not pName = '中兴z954'

 

 

删;外键在谁身上就先删谁;

WHERE条件

查询条件 符号 示例
比较 =,<,>,<=,>=,!=,<>,!>,!<,<=> SELECT * FROM table_name WHHERE id = 1
指定范围 BETWEEN AND,NOT BETWEEN AND SELECT * FROM table_name WHHERE id BETWEEN 1 AND 2
指定集合 IN,NOT IN SELECT * FROM table_name WHHERE id IN(1,3,5,7,9) 集合内忽略大小写
匹配字符 LIKE, NOT LIKE SELECT * FROM table_name WHHERE id LIKE '_2%'
是否为空 IS NULL,IS NOT NULL SELECT * FROM table_name WHHERE id IS NULL
多个查询条件 AND,OR SELECT * FROM table_name WHHERE user = 'admin' AND password = 'admin'

模糊查询

  • %:代表0个,1个或者多个任意字符
  • _ :代表1个字符

格式:

use 数据库名

选定指定数据库为当前默认被操作的数据库。

在使用操作数据表中的数据之前,必须要选定一个当前数据库。

 

1,t_表示表名;字段 英文 field

查看上一步操作的警告信息

SHOW WARNINGS

最大值最小值MAX()、MIN()

在查询结果中的指定字段中找到最大的值或最小的值。

SELECT MAX(sScore) FROM student

//得到成绩最高分数

SELECT MIN(sScore),sSex FROM student GROUP BY sSex

//分别得到男生和女生最低分

 

 

2,创建表;

MYSQL中的函数

语法:

INSERT INTO 表名(字段1,字段2,字段3,……) values(值1,值2,值3,….)

其中,字段的位置与值的位置必须一一对应。

1,主键约束(primary key)非空不能重复;一个表只能有一个主键一个主键可以有多个列

什么是子查询

子查询是将一个查询语句嵌套在另一个查询语句之中。内层查询语句的查询结果,可以为外层查询语句提供条件

数值类型的字段可以设置的参数:

3、第三范式(3NF)

GROUP BY 查询结果分组

默认情况下,GROUP BY 查询结果分组得到每组的第一个值
配合GROUP_CONCAT()得到分组详情
配合聚合函数

  • COUNT() NULL值不算一条记录
  • MAX()
  • MIN()
  • AVG()
  • SUM()

配合WITH ROLLUP记录上面所有记录的总和

逻辑与and

SELECT * FROM product
WHERE pPrice <800 AND pId >6 AND pName ='Nokia v998'

 

6,注意

UNION

(SELECT 语句 UNION SELECT 语句)

示例:

DELETE FROM userinfo WHERE uid = 2

 

 

1,整数

索引分类

  • 普通索引
  • 唯一索引(UNIQUE)
  • 全文索引(FULLTEXT)
  • 单列索引
  • 多列索引
  • 空间索引(数据类型为GEOMETRY,存储引擎为MyISAM)SPATIAL

日期时间类型

Date 1000-01-01 ~ 9999-12-31

TIME -838:59:59~838:59:59

DateTime 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

TimeStmp 1970-01-01 00:00:00 到2037年的之间的某一个时刻

Year 存储1901~2155年的一个年份。

 

(2,'李四',25,'男'),

不指定具体的字段

INSERT [INTO] tbl_name VALUE | VALUES (值,......)

mySQL中的数据类型

在mySQL中每个字段,都必须明确它存放的数据的类型,一旦指定了类型,该字段(列)中的数据都必须符合这个类型的范围,否则就会引起错误。

 

并且字符等类型需要指定内容的最大长度。

 

4,时间

数据库的创建

CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [[DEFAULT] CHARACTER SET [=] charset_name]

例如:

CREATE DATABASE IF NOT EXISTS  test_db DEFAULT CHARACTER SET utf8

左连接

在两张表联合查询的时候,我要显示主表中包括没有关联关系的数据在内的所有数据。

 

SELECT * FROM score

LEFT JOIN student

ON score.sid = student.sid

 

 
   

 

2,修改某列的某个数据

算数运算符

符号 表达式 作用
+ X1+X2 加法
- X1-X2 减法
* X1*X2 乘法
/ X1 / X2 除法
DIV X1 DIV X2 除法
% X1 % X2 取余
MOD X1 MOD X2 取余

小练习:

1、 记忆背诵增删改查指定的语法。

2、 手动新建一个数据库product,在其中新建数据表product,这个表中的字段:pid(主键)、pName(产品名)、pModel(型号)、pIntro(简介)、pFrom(产地)、pPrice(价格) 。

3、 用insert语句添加10条不同的产品数据

4、 查询

a) 查询所有产品数据

b) 查询所有产品的产品名和价格

c) 查询所有价格在2000以上的产品

d) 查询所有产品为重庆并且价格大于3000的产品

e) 查询所有产地不是重庆的产品

5、 将第5条记录的产品号修改为T1000

6、 删除所有价格小于5元的产品。

 

将第三题之后的sql语句复制到一个word文档中,然后组长检查组员,班长检查组长。

3、5、6每题20分。

第4题中的每个小题8分共40分

 

命令行与高级查询

4,子查询,要消耗更长的执行时间,当数据量增加时,执行时间会急剧加长,

外键

Mysql命令行

1、 在phpstudy的右键菜单中,mysql工具 à mysql命令行

2、 弹出的命令框中提示”enter password”,输入默认密码root

3、 如果看到”you mysql connection”就说明你登陆成功了。

4、 在命令行中,每一条指令都必须以分号;结束,否则系统会认为你这条指令还没有完成,始终要求你继续输入。

 

int ;4个字节,存放-2000000000 到 +2000000000 范围的整数;

日期时间类型

数据类型 存储范围 存储需求
TIME -838:59:59 ~ 838:59:59 3
DATE 1000-1-1 ~ 9999-12-31 3
DATETIME 1000-1-1 00:00:01 UTC ~ 9999-12-31 23:59:59 8
TIMESTAMP 1970-1-1 00:00:01 UTC ~ 2038-1-19 3:14:07 4
YEAR 1901~2155 1

select语句

查询语句,专门用于在数据表中按照用户指定的条件进行查询。

select * from t_team

修改表结构

多张表连接

示例:

SELECT * FROM score

INNER JOIN student ON score.sid = student.sid

INNER JOIN class ON student.cid = class.cid

 

3,非空约束(not null)指定的列不能为空;

删除唯一

ALTER TABLE tbl_name DROP  {INDEX| KEY} index_name

_(下划线)通配符

_ 通配符的作用与%类似,但是它只能匹配单个任意字符。

 

show create table 表名称;

5.通过HAVING子句对分组结果进行二次筛选

配合GROUP BY 实现,比如:

SELECT Region,COUNT(*),MAX(Population),MIN(Population),SUM(Population),AVG(Population) FROM country GROUP BY Region HAVING MAX(Population) > 1000000

数据过滤通配符

通配符,就是指能够通用的匹配其他字符的符号。

3,联合主键写法;一个表只能有一个主键,但一个组键可以有多个列

其他常用函数

名称 描述
FORMAT(x,n) 将数字x进行格式化,将x保留到小数点后n位
ASCII(x) 返回字符串x的第一个字符的ASCII码
BIN(x) 返回x的二进制编码
HEX(x) 返回x的十六进制编码
OCT(X) 返回x的八进制编码
CONV(x,f1,f2) 返回将x从f1进制数变成f2进制数
INET_ATON(ip) 将ip地址转换为数字
INET_NTOA(n) 将数字转化为IP地址
GET_LOCK(name,time) 定义锁
RELEASE_LOCK(name) 释放锁

安装与使用mysql

安装mysql的方式很多,我们使用phpstudy这个软件来安装php + mysql的运行环境。安装之后,我们就拥有了mysql的服务。而且还有两款mysql客户端。

 

Mysql分为客户端与服务端。服务端仅仅用于对软件程序提供数据通信,普通用户无法直接看到其中的数据内容。

 

客户端用来将服务端的数据,以用户可以理解的方式展示在其界面上。

 

例如: 距离

UNION ALL

(SELECT 语句 UNION SELECT 语句)

注意:UNION 和 UNION ALL 的区别是UNION 去掉相同记录,UNION是简单的合并到一起

SQL语句

是一门专门用于数据库操作的语言,SQL语句的语法不仅仅适用于mysql数据库,同时也适用于几乎所有的主流数据库。当然不同公司出口的数据库在语法细节上还是有些差异。

 

7,查看表;

创建外键(先有主表)

CREATE TABLE [IF NOT EXISTS] tbl_name (
 字段名称 字段类型 [完整性约束条件] ##完整性约束条件顺序为: [UNSIGNED | ZEROFILL] [NOT NULL] [DEFAULT 默认值] [[PRIMARY] KEY | UNIQUE [KEY]] AUTO_INCREMENT
...
[CONSTRAINT 外键名称] FOREIGN KEY(字段名) REFERENCES 父表(字段名) [ON {DELETE | UPDATE } {CASCADE | SET NULL }] [ON {DELETE | UPDATE } {CASCADE | SET NULL}]
)

auto_increment

自增

double;8字节 双精度浮点型数据 需要双精度存储的小数数据

数据库操作(DDL)

创建包含自增主键的数据表

示例:创建客户表:

create table customers(

 id int not null auto_increment,

 name varchar(20) not null,

 age int not null,

 address varchar(100) not null default 'empty',

 primary key(id)

);

 

说明:

not null 代表该字段不允许出现空值,就是说当你使用insert语句插入数据记录的时候,必须向这个字段赋值,否则数据操作将发生错误。

auto_increment 自增

Default 默认值

Primary key 指定数据表的主键

and 并且

整数类型

数据类型 存储范围 字节
TINYINT 有符号值-128~127;无符号值 0~255; 1
SMALLINT 有符号值-32768~32767;无符号值 0~65535; 2
MEDIUMINT 有符号值-8388608~8388607;无符号值 0~16777215; 3
INT 有符号值-2147483648~2147483647;无符号值 0~4294967295; 4
BIGINT 有符号值-9223372036854775808~9223372036854775807;无符号值 0~18446744073709551615L; 8
BOOL,BOOLEAN 等同于TINYINT(1),0为FALSE ,其余为TRUE 1

恢复

在phpmyAdmin中点击“导入”,选择.sql文件的路径(格式选择SQL),点击执行。

 

1,创建一个表,在表中外键字段与上一个关系表绑定

修改表名

ALTER TABLE tbl_name RENAME [TO|AS] new_name

或者

RENAME TABLE tbl_name TO new_name

更改表结构:增加字段

添加一个字段

alter table student add sScore float null;

 

其中:

add 代表增加一列

Null 代表这个字段允许空值。

student 是数据表名

sScore 是新增的字段名,后面是数据类型。

timestamp;4字节;

同时插入多条记录

INSERT [INTO] tbl_name   [(字段名称1,......)]  VALUE | VALUES (值,......), (值,......),......

删除数据库

格式:drop database 数据库名

3;删除数据库;drop database 库名;

删除索引

(DROP INDEX 索引名称 ON tbl_name)

unsigned zerofill属性

当数据的宽度小于类型的最大宽度时,则在数据前面自动填充0

5,删除数据;

修改字段

ALTER TABLE tbl_name MODIFY 字段名称 字段类型 [完整性约束条件] [FIRST | (AFTER  字段名称)]

通过关键字IN来进行关联查询

查询所有数学成绩在60分以上的学生的信息。

Select * from student where

sid in

(

    SELECT sid FROM score

    WHERE score >60 And sProject = '数学'

)

 

IN在此处表示,sid必须与()内的查询结果之一相等。

 

concat(要拼接的数据);

修改数据库的编码方式

ALTER { DATABASE | SCHEMA }  db_name [DEFAULT] CHARACTER SET [=] charset_name

phpMyAdmin

phpMyAdmin是最常用的mysql客户端,它是基于php语言的。

在桌面右下角的phpstudy图标上右击弹出菜单中选择phpMyAdmin就可以启动进入了。启动之后,需要输入用户与密码进行登陆,默认的用户名密码都是root。

 

4,select;投影,投影后做的操作都不会改变物理数据;

右外连接

(RIGHT [OUTER] JOIN)

显示右表的全部记录及左表符合连接条件的记录

GROUP BY分组

在指定字段中将数据内容重复的记录,聚合为一组。剔除重复的值。

示例:

SELECT * FROM student GROUP BY sSex

SELECT sName FROM student GROUP BY sAge

 

show tables;

概览

外键是表的一个特殊字段,被参照的表是主表,外键所在字段的表为子表。设置外键的原则需要记住,就是依赖于数据库中已存在的表的主键。外键的作用是建立该表与其父表的关联关系。父表中对记录做操作时,子表中与之对应的信息也应有相应的改变。
外键的作用是保持数据库的一致性和完整性。
可以实现一对一或者一对多的关系

注意

  1. 父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
  2. 数据库的存储引擎只能为InnoDB。
  3. 外键列和参照列必须具有相似的数据类型其中数字的长度或是否有符号位必须相同:而字符的长度则可以不同。
  4. 外键列和参照列必须创建索引。如果外键不存在索引的话,MYSQL将自动创建索引。

外键约束的参照操作:

  • CASCADE:从父表删除或者更新且自动删除或者更新子表中匹配的行。
  • SET NULL:从父表删除或者更新行,并设置子表的中的外键列为NULL。如果使用该选项必须保证子表列中没有指定NOT NULL。
  • RESTRICT:拒绝对父表的更新或者删除操作。
  • NOT ACTION: 标准SQL的关键字,在MYSQL中与RESTRICT相同

常用的数据库的类型

Mysql 性能强悍,可以免费使用。

MSSQL server 微软公司的数据库软件,通常用于搭配微软体系的编程语言。

Access是office的办公套件之一。

Oracel 性能非强悍,也非常昂贵。

2,唯一约束(unique)指定的列非空的不能重复

联合查询

右连接

查询附表(JOIN关键字之后的表)中包含没有关联关系的数据在内的所有数据。

SELECT * FROM score

RIGHT JOIN student

ON score.sid = student.sid

 

REFERENCES 关系表的表民(主键)

左外连接

(LEFT [OUTER] JOIN)

显示左表的全部记录及右表符合连接条件的记录

求和sum()

在查询结果中对指定字段的值求和。

SELECT SUM(sSCore) FROM student

//全班总分

SELECT SUM(sSCore),sSex FROM student GROUP BY sSex

//查看男生总分和女生总分

 

 

4,在忘记root密码的时候,可以这样

LIMIT限制查询结果显示条数

  • LIMIT 显示条数
  • LIMIT 偏移量,显示条数
(SELECT * FROM country LIMIT 2,1)

删除数据表

格式:drop table 数据表名

3;删除数据库;drop database 库名;

添加外键

(ALTER TABLE tbl_name ADD [CONSTRAINT 外键名称]  FOREIGN KEY(字段名) REFERENCES 父表(字段名))

示例:

部门表(父表)

id depName
1 教学部
2 技术部
3 运营部
4 市场部
CREATE TABLE IF NOT EXISTS department (id TINYINT UNSIGNED AUTO_INCREMENT KEY,depName VARCHAR(20) NOT NULL UNIQUE)ENGINE=INNODB;

员工表(子表)

id username depId
1 King 1
2 Zhang 3
3 Ling 2
4 Jack 4
CREATE TABLE IF NOT EXISTS employee (id TINYINT UNSIGNED AUTO_INCREMENT KEY,userName VARCHAR(20) NOT NULL UNIQUE,depId TINYINT UNSIGNED)ENGINE=INNODB;

如果只删除父表中部门4,那么员工表中还有属于部门4的员工存在,这显然是不合适的,这时,可以使用外键来解决

创建外键(先有主表):

CREATE TABLE IF NOT EXISTS employee (id TINYINT UNSIGNED AUTO_INCREMENT KEY,userName VARCHAR(20) NOT NULL UNIQUE,depId TINYINT UNSIGNED , FOREIGN KEY(depId) REFERENCES deparment(id) )ENGINE=INNODB;

自增auto_increment

自增字段中通常存放的是整数类型的数据,用于表示数据库中的记录的序号。

自增字段的值不需要手动输入,其中的编号是自动产生的,每当向这表里面添加一条新记录的时候,自增字段会自动取出上一行字段值,然后加一,作为新记录的主键值。(主键绝对不会发生重复,即使上一条记录被删除了)。

(10), 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。

引发子查询的情况

  • 使用 [NOT] IN 的子查询
  • 使用比较运算符的子查询 = > < >= <= <> != <=>
  • 使用 [NOT] EXISTS 的子查询
  • 使用 ANY | SOME 或者 ALL的子查询
符号 ANY SOME ALL
>,>= 最小值 最小值 最大值
<,<= 最大值 最大值 最小值
= 任意值 任意值
!=,<> 任意值

示例:

SELECT name FROM user where depId IN(SELECT id FROM ids)
SELECT name FROM user where depId >=(SELECT id FROM ids)
SELECT name FROM user where EXISTS(SELECT id FROM ids)

limit关键字

limite后面需要跟两个数字,代表从指定的记录开始(使用数据记录在物理上的次序而不是ID),查找多少条记录出来。

在where后边加group by 按什么类型分组与count联合使用

浮点类型

数据类型 存储范围 字节
FLOAT[(M,D)] 负数取值范围为-3.40E+38~-1.17E-38,0,1.175E-38~3.40E38;M是数字总位数,D是小数点后面的位数,若M,D被省略,根据硬件限制来保存值。 4
DOUBLE[(M,D)] -1.79E+308~2.22E-308,0,2.22E-308~1.79E308 8
DECIMAL[(M,D)] 和DOUBLE一样,内部以字符串形式存储数值 M+2

枚举类型

ENUM / SET 类型

设置其默认值为(‘值1’, ‘值2’, ‘值3’,…),由用户指定多个可选值,字段中的值必须是其中之一,最多只能有65535个可选值。

 

not in() 不取()中的;not;非的意思

查询表达式

每个表达式表示想要的一列,必须至少有一列,多个列以","号分隔; "*" 表示所有列,tbl_name.*表示命名表的所有列。查询表达式可以使用 [AS] alias_name 为其赋予别名。

罗列出当前数据库中的数据表

show tables

(8), 刷新权限(必须步骤):flush privileges; 。 

删除字段

ALTER TABLE tbl_name DROP 字段名称

若需要删除多个字段,需要多个DROP操作,以“,”号分隔。

注意:添加字段(ADD)与删除字段(DROP)可以在同一个语句里面(ALTER TABLE tbl_name ADD .....,DROP .....)

选择数据库use

3,联合主键写法;一个表只能有一个主键,但一个组键可以有多个列

添加字段

ALTER TABLE tbl_name ADD 字段名称 字段类型 [完整性约束条件]  [ FIRST | (AFTER 字段名称)] 

若需要添加多个字段,需要多个ADD操作,以“,”号分隔

mysql数据库基础知识

sqlserver ,access是微软的数据库

查看当前数据库下的数据表

SHOW TABLES;

SELECT 查询中的关键字

like“1%2%3” 代表任意字符123处都可以添加关键字

将查询结果写入到数据表

(INSERT [INTO] tbl_name  [(col_name),......] SELECT ...)

AVG求平均值

格式:AVG(字段名)

对指定的字段中(一列中) 的数据值进行求平均值的运算。

SELECT AVG(sAge) FROM student

SELECT AVG(sScore) FROM student WHERE sAge<=18

SELECT AVG(sScore),sSex FROM student GROUP BY sSex

 

 

不满足第一范式(1NF)的数据库就不是关系数据库。所谓第一范式(1NF)

常用存储引擎(注意各引擎优缺点)

  • InnoDB
  • MyISAM
  • Memory

小练习:

1、 新建一个产品product数据库

2、 在数据库中添加产品product表,并建立字段pId (主键)、pName(产品名称)、pModel(产品型号)、pPrice(产品价格)

3、 添加5条产品信息

4、 在数据库中再添加一个产品入库表(saveInLib),并建立字段:sid(主键)、pName(产品名称)、saveInTime(入库时间)、saveInCount(入库数量)。

5、 添加5条产品入库记录。

 

1,用SET PASSWORD命令

二进制类型

内连接

就是指仅仅查询两张表中有关联关系的数据,而没有关联关系的数据是不会被查询出来的。

 

 
   

 

如果数据存在则打印,不能等于它本身; not exsits;相反,如果数据不存在则打印

修改表的自增长值

ALTER TABLE tbl_name AUTO_INCREMENT= 值

备份

在phpmyAdmin中使用“导出”功能将数据表的结构与数据保存为一个.sql文件(保存格式选择SQL)

2,一对多外键必须设计在多方身上

插入数据

unsigned属性

“整理”菜单中的unsigned选项,代表无符号,代表这一字段中的数值不能为负数,因为无符号就是代表没有正负号。如果“整理”菜单留空,什么都不选的话,就是代表有符号,可以为正数也可以为负数。

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)

外连接查询

主键

很多时候我们将id称为主键,主键这是指这张表的排列顺序的依据。

3,修改数据库密码账户登录密码

删除数据库

DROP  { DATABASE | SCHEMA } [IF EXISTS] db_name

示例:

INSERT INTO userinfo(uName,uPhone,uIDCard)

VALUES('江小白','010-89562321','5001234567814541X')

 

向数据表中插入一条用户信息

 

INSERT INTO userinfo(uName) VALUES('张小强')

插入一条用户信息,但是只有姓名,其他字段自动留空或使用默认值(如果其中某个字段设置为不允许为null,而没有默认值的话,就必须要给这个字段赋值了)。

 

INSERT INTO userinfo VALUES

(3,'王小虎','010-89562321','5001234567814541X')

 

可以省略字段名,但是所有的字段都必须按照顺序来依次赋值。包含主键ID(要按照顺序来填写主键值)

 

一次性插入多条语句

insert into student(sName,sAge,sSex,sPhone)

values('小黑',20,'女','010-89562314'),

('小强',20,'男','020-89562314'),

('小红',20,'女','021-89562314'),

('小黄',20,'男','019-89562314'),

('小李',20,'女','022-89562314')

 

 

8,外链接查询,

删除数据

(DELETE FROM tbl_name  [WHERE 条件] [ORDER BY 字段名称] [LIMIT 限制条件])

或者彻底清空数据表

(TRUNCATE [TABLE ] tbl_name)

罗列出数据表中的字段

格式:show columns from 表名

Describe 数据表名

 

>,< ,>=, <= ,!=,(<>也表示不等于)

MYSQL中的数据类型

int整数类型

只能存放整数

select 列 from 表 where 列=all (select 列 from 表1 where 列=数据);

索引

注意:

1、 次序是从0开始的,也就是说第一条记录的序号是0

2、 这里的序号不等于ID,它仅仅是代表排列次序。

3、 LIMIT关键字是mysql所独有的,比如:mssql和Oracle中就没有Limit关键字。

 

SELECT * FROM student LIMIT 3,2

 

从第4条记录开始,获取之后的两条记录。

 

6,注意

添加默认值

ALTER TABLE tbl_name ALTER 字段名称 SET DEFAULT 默认值

小练习:

1、用Create指令创建一个产品销售记录数据表,包含字段:产品名、销售地区、销售数量、销售金额。(10分)

2、假设本公司出售的产品只有三种,销售地区也只有三个。用insert语句插入十条产品销售记录。(产品与销售地区肯定有重复值。)(15分)

3、统计每种产品的销售总额(10分)

4、统计每种产品的平均销售额。(10分)

5、统计每种产品的销售总数量。(10分)

6、在每个地区销售的每种产品的名称,连接成一个以逗号分隔的字符串。(15分)

7、同时统计每种产品的最大销售额。(10分)

8、统计产品在每个地区的最低销售额。(10分)

9、得到总销售额。(10分)

 

 

 

 

 

 

 

mysql_高级查询

4,默认引擎;

删除数据表

DROP TABLE [IF EXISTS] tbl_name[,tbl_name,...]

ORDER BY排序

按照指定的字段的值的大小的次序,来排列查询的结果。

SELECT * FROM student ORDER BY sScore

//通过成绩来排列学生。默认为升序(从小到大)

SELECT * FROM student ORDER BY sScore DESC

//通过成绩来排列学生。添加DESC就是降序(从大到小)

 

 

REFERENCES 关系表的表民(主键)

数学函数

名称 描述
CELL(x) 进一取整
FLOOR(x) 舍一取整
MOD(x,y) 取余数(取模)
POWER(x,y) 幂运算
ROUND(x) 四舍五入
TRUNCATE(x,y) 数字截取
ABS() 取绝对值
PI() 圆周率
RAND()和RAND(X) 返回0~1之间的随机数,RANX(X)
SIGN(X) 返回X的符号,-1为负数,0,1为正数
EXP(X) 计算e的几次方

创建一个新的数据库

命令格式:create database 数据库名

double;8字节 双精度浮点型数据 需要双精度存储的小数数据

常用匹配方式

模式字符 含义
^ 匹配字符串开始
$ 匹配字符串结尾
. 匹配字符串任一字符,包括换行和回车
[字符集和] 匹配字符集合的任一字符
[^字符集和] 匹配除了字符集合以外的任一字符
s1 | s2 | s3 匹配s1、s2、s3任一字符串
* 代表0个、1个或者多个其前的字符
+ 代表1个或者多个其前的字符
字符串{N} 字符串出现N次
字符串{M,N} 字符串至少出现M次,最多N次

%通配符

%代表任意个数的任一字符,它通常是用在select语句中与LIKE关键配合使用的。

where a.sems_role_rid=b.rid and a.udeptid=c.deptid

通过SET形式插入记录

INSERT [INTO] tbl_name SET 字段名称=值,......

数据表

由行与列构成的二维结构的存储数据的表格。

4, 拷贝数据

通过ORDER BY 进行排序

默认升序排列(ASC),可省略。降序排列(DESC),可排序多个字段通过","号连接

SELECT * FROM country ORDER BY Population ASC,SurfaceArea ASC
SELECT * FROM country ORDER BY 3 ASC
SELECT * FROM country ORDER BY RAND() #随机记录

in关键字

在一个集合中进行匹配,只要数据与集合中的任意一项相同,就以为数据满足条件。

 

SELECT * FROM student WHERE sAddress IN('北京','西安','天津','山东')

 

查找地址是 北京,西安,天津 或 山东的学生信息

 

2,增加某行数据

数据表操作

新建数据表

1、 选中数据库之后,点击右侧的“新建数据表”,填写“数据表名”。

2、 指定数据表的字段,也就是列。在指定字段的过程中我们要对字段添加字段名、数据类型、数据长度、是否是主键、是否自增。(多数情况下,主键是名为id的整数类型,而且是自增的。)

3、 为字段指定这一列的数据类型。

gb1312;中文

修改字段名称

ALTER TABLE tbl_name CHANGE 旧字段名称 新字段名称 字段类型 [完整性约束条件] [FIRST | (AFTER  字段名称)]

注意事项:

1、%不但代表任意个数的任意字符,它也可以空字符。

2、数据尾部的空格可能会干扰通配符的搜索,比如:现有数据’abc  ’,如果它最后有一个或多个空格的话,则 %abc将不会查找到该数据,因为后面多余的空格也是字符。解决方法是前后都加上%。

3、%不能匹配null值。

 

4,当前日期;select curdate();

创建表的时候创建索引

CREATE TABLE [IF NOT EXISTS] tbl_name (
     字段名称 字段类型 [完整性约束条件] ##完整性约束条件顺序为: [UNSIGNED | ZEROFILL] [NOT NULL] [DEFAULT 默认值] [[PRIMARY] KEY | UNIQUE [KEY]] AUTO_INCREMENT
     ......
 [UNIQUE | FULLTEXT | SPATIAL ] INDEX|KEY [索引名称](字段名称[(长度)] [ASC|DESC]) 
)ENGINE = 引擎名称 CHARSET = 编码方式;

Update修改数据

根据指定的条件确定需要修改的行,然后修改指定字段的数据。

二,mysql基础

创建数据表的同时将查询结果写入到数据表

CREATE TABLE [IF NOT EXISTS] tbl_name (
  [(creat_defination)]
  select_statement

简要语法描述:

SELECT <字段1,字段2,字段3…..> FROM <数据表名> [WHERE 筛选条件]

其中字段部分代表你想要从这张数据表中查询哪些字段(列),如果要查询所有字段,可以 * 号表示。

示例:

SELECT pName FROM product

//从产品表中查询所有产品名称

SELECT pName,pPrice FROM product

//从产品表中查询所有产品名称和价格

SELECT * FROM product

//从产品表中查询中所有产品的字段

SELECT pName,pPrice-30 FROM product

//在查询时给所有产品减30元

SELECT pName as '产品名',pPrice as '价格' FROM product

//在查询时修改结果集中的字段名

SELECT 3.1415926 *12 *12

//用select语句来进行数学运算

 

1,基本命令

数据操作(DML)

语法:

update 数据表名 set 字段1=值1,字段2=值2,……..WHERE 条件

虽然where是一个可选参数,但是通常情况下都需要写where条件,如果不写就是修改整张表的所有行。

9,查看新增表的正规写法;

REGEXP '匹配方式'

(SELECT * FROM user WHERE REGEXP '^[1-9]$')

示例:

SELECT * FROM student WHERE sName LIKE '小_'

SELECT * FROM student WHERE sName LIKE '小__'

 

查找以“小”开头的之后任意两个字符的数据,而且必须是两个字。

 

注意:下划线与%不同的是前者不匹配字符,必须得有一个字符才能匹配。

 

SELECT * FROM student WHERE sName LIKE '_老_'

 

 

byte ;+127——-128;127+1取返=-128;

查看支持的存储引擎信息

SHOW VARIABLES LIKE 'have%'

mysql中的聚合函数

就是对指定字段中的一列数据进行统计和运算的函数。

alter table 表名称 rename 新表名称;

正则表达式查询

varchar字符类型

可以存储任一字符,包括符号、数字、字母,但是他们都会被当成字符为处理。

5,select * from 表名

加密函数

名称 描述
MD5(str) 信息摘要算法
PASSWORD(str) 密码算法(ver5.6过时)
ENCODE(str,pwd_str) 加密结果是一二进制数,必须使用Blob字段保存
DECODE(crypt_str,pwd_str) 对通过ENCODE加密之后的内容解密

*代表列的字段名名多个用“,”隔开,直接用*表示查询全部;

数据表的创建

CREATE TABLE [IF NOT EXISTS] tbl_name (
     字段名称 字段类型 [完整性约束条件] ##完整性约束条件顺序为: [UNSIGNED | ZEROFILL] [NOT NULL] [DEFAULT 默认值] [[PRIMARY] KEY | UNIQUE [KEY]] AUTO_INCREMENT
     ......
)ENGINE = 引擎名称 CHARSET = 编码方式;

year;1字节;格式YYYY;范围1901-2155

修改表的存储引擎

ALTER TABLE tbl_name ENGINE=存储引擎名称

between 下线 and 上线

比较运算符

符号 形式 作用
= X1=X2 判断是否相等
!=或<> X1!=X2或X1<>X2 判断是否不相等
<=> X1<=>X2 判断是否相等,可以判断是否等于NULL
>,>= X1>X2,X1>=X2 判断是否大于等于
<,<= X1<X2,X1<=X2 判断是否小于等于
IS NULL 或 IS NOT NULL x1 IS [NOT] NULL 判断是否等于NULL
BETWEEN ... AND ... 或者 NOT BETWEEN ... AND... X1 BETWEEN m AND n 判断是否在范围内
IN 或 NOT IN X1 IN (值1,...) 判断是否在一个固定范围内
LIKE 或 NOT LIKE X1 LIKE 表达式 判断是否匹配
REGEXP REGEXP 正则表达式 判断是否正则匹配

like 模式 格式;

查看当前服务器下的数据库列表

SHOW { DATABASES | SCHEMAS }

6,distinct;去掉重复位置,去重后不能和其他数据一起显示,

8,启动mysql后台服务(管理员运行命令窗口);

只要满足一个就可以打印,不能等于它本身

mysql> flush privileges; 

select ( select 列名 from表1) from 表1 ;

共有字段必须要两个表中都有才能找到

5,删除数据;

转到mysqlbin目录。 

中表的每一行只包含一个实例的信息。

7,查看当前用户;select user();

2,一对多外键必须设计在多方身上

alter table 表名 drop FOREIGN key 外键名

3,外键

1,where 条件;

(1,'张三',20,'男'),

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,

2,怎么给已存在的表添加外键约束

1,索引

1,一对一唯一外键关联,一对一必须保证外键唯一性,加唯一性约束

7,查看表;

例如:测量,温度

6,注意

2,f_表示字段名;表格 英文 table

2,三张表查询例子(left join 表 on 外键拼接)

5,单表查询

2,怎么给已存在的表添加外键约束

select 列 from 表 where ID=数据 order by pk_playerid desc;

7,sql语句中也可以用true和flas,true表示1一般代表男,flas表示0一般代表女,是int型

增;主键在谁身上就先增加谁;

1,is;是“是”的意思(is null)=是空

3,max();最大值;

(1,'张三',20,'男'),

alter table test add class_id int

二,mysql基础

4,select;投影,投影后做的操作都不会改变物理数据;

不能被业务操作

2,退出;exit

4,查看字段结构;

(别忘了最后加分号) 。 

alter table 表名称 字段名;

2,数据库的数据完整性;

6,有主从表的时候数据插入先插主表,在插从表;有外键的是主表

7,链接查询查,

1,比较符号;

delete form 表名称 where id;

1,TINYBLOB;255字节;0-255字节;

like“1%2%3” 代表任意字符123处都可以添加关键字

*;表示全部

1,sun();求和;

has a;生命周期,拥有,自己的

alter table 表名 add 字段 类型

1,主键约束(primary key)非空不能重复;一个表只能有一个主键一个主键可以有多个列

(3),输入mysqld --skip-grant-tables 回车。

MEDIUMBLOB;(存放2的24次方个字符);

1,查两张表的数据;select * from 表1 left join 表2 on 外键ID=主键ID where 列="数据"

(7), 改密码:update user set password=password("123") where user="root";

5,外键名规则;FK_本表名_与之关联的表的名字

不能被业务操作

一般很少用*因为效率低;

3,修改数据库密码账户登录密码

all;表示非空,也是mysql默认值

3,特点;数据的更新和索引的更新是同步的

'' 和null 一样吗?? 严格意义不一样

6,auto_increment;主键自增长;

2,增加某行数据

1,查看数据库;show databases;

select 某列 from ( select 列名 from表1) ;

sqlserver ,access是微软的数据库

2,删除年龄在18-20

1,TINYBLOB;255字节;0-255字节;

9,注意

8,外链接查询,

gbk;中日韩语言

1,where 条件;

2,三张表查询例子

4,子查询,要消耗更长的执行时间,当数据量增加时,执行时间会急剧加长,

2,添加CONSTRAINT

drop table 表名称

3,在where后边添加子查询

不是第一个数据必须是第二个数据,不能有第三个数据出现

distinct;表示所有非空不重复的值

例如: 科学/数学数据

4,注意

如果数据存在则打印,不能等于它本身; not exsits;相反,如果数据不存在则打印

1,删除一行数据

*代表列的字段名名多个用“,”隔开,直接用*表示查询全部;

普通索引可以加到多列上

主键非空唯一,

'' 和null 一样吗?? 严格意义不一样

3,增加全部数据

select 列 from 表 where 列=(select 列 from 表1 where 列=数据) ;

4,修改数据;

insert into 新表名(新字段名) select 旧字段名 from 旧表名

gbk;中日韩语言

set password for 用户名@localhost = password('新密码'); 

3,查看当前时间日期;select now();

(6),连接权限数据库: use mysql; 。 

primark(第一个主键,第二个主键);

1,一个外键对应一个主键,外键和外键约束是分开的,

oracle,mysql,java都是oracle公司的

insert into 表名称(字段1,字段2........)values('j138',"红瓦寺".......)选择插入某些列;

存储大型文本数据

6,子查询

2,avg(); 平均值;

9,查看新增表的正规写法;

net start mysql;

一般很少用*因为效率低;

text; 没有最大长度限制的可变长度Variable; (存放65535个字符)

2,删除索引;

mysql> flush privileges; 

共有字段必须要两个表中都有才能找到

enumcvall(a,b,c.......);列枚举-限定有限值

本机ip;127.0.0.1

4,在忘记root密码的时候,可以这样

4,主键的特性

select  a.uid,a.uname,a.upsw

(2), 打开DOS窗口,转到mysqlbin目录。 

alter table 表名称 字段名;

要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

增;先增主表后增从表

2,用mysqladmin

只能查一列,多行;不常用,效率低

insert into className(class_name) select class_name from classes

2,逻辑比较

(2,'李四',25,'男'),

and;和

中表的每一行只包含一个实例的信息。

 from table1 a,table2 b, table3 c 

新实体与原实体之间为一对多关系。在第一范式(1NF)

UPDATE 表名 SET 列1=新值1,列2=新值2 WHERE 过滤条件

2,修改字段;

1,用SET PASSWORD命令

2,浮点

1,一对一唯一外键关联,一对一必须保证外键唯一性,加唯一性约束

where f_teamName="法国队"

2,数据库是独立;

5,二进制大数据,二进制大对象

实际字符串长度 (高达 255 字 符) 例如:名字,密码,短文标签

alter table test add CONSTRAINT FK_TEST_CLASSID

6,有主从表的时候数据插入先插主表,在插从表;有外键的是主表

比如: 年纪

3,字符

4,查看字段结构;

1,整数

date;3字节;格式YYYY-MM-DD;范围1000-01-9999-12-31

例如: 科学/数学数据

8,启动mysql后台服务(管理员运行命令窗口);

4,默认引擎;

2,三张表查询例子

update 表名称 ste 字段名,字段名=值 where id;

1,实体;表名,按照对象来划分

普通索引可以加到多列上

5,select * from 表名

(3),输入mysqld --skip-grant-tables 回车。

dbz 是IMB公司的

删;先删中间表,再删两表

4,mysql聚合函数

即实体中的某个属性不能有多个值或者不能有重复的属性。

增;先增两表,在增中间表

DELETE FROM t_student WHERE 年龄 BETWEEN 18 AND 20

(1), 关闭正在运行的MySQL服务。 

3,pk_表示主键;主键约束 primary key

八,关系数据库的几种设计范式介绍

cd ;dos窗口查看文件夹,盘与盘之间不需要cd

select min(all 求哪一列的最小值) from 表名称

9,关闭mysql后台服务(管理员运行命令窗口);

5,删除表;

INNODB;默认的

FOREIGN key(要把外键给那个字段的字段名)REFERENCES 关系表的表民(主键)

left join t_player on pk_teamid=fk_teamid

select * from 表名1,表名2 where 外键ID=主键ID and 某一行条的件;

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,

1,数据库;

2,用mysqladmin

all;表示非空,也是mysql默认值

alter table student drop index 索引名称;

distinct;表示所有非空不重复的值

6,打印版本信息;select version();

3,medfumblob;16m;0-16m;

例如:测量,温度

2,数据库的数据完整性;

utf8;大型编码;

存储通常包含预定义字符串的变量 例如: 定期航线,国家或邮编

selsct count(*) from 表名 group by 分组的类型,按什么分组;

select  a.uid,a.uname,a.upsw

4,索引的缺点;

>,< ,>=, <= ,!=,(<>也表示不等于)

存储大型文本数据

1,在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,

只能查单行单列,用in时可以查单列多行,有 in 就有 not in

是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,

1,进入库;

order by 排序的列 asc // 永远写在最后整个查询的最后

不是第一个数据必须是第二个数据,不能有第三个数据出现

alter table 字段名称 add 定义列;

六,DQL;数据查询语句;查

2,字段增删改;

5,指定有效数据(check(第一个数据 or 第二个数据格式(健名=值)))

为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。

四,DML;数据操作语句;增删改

5,concat();字符串拼接,一般很少在mysql上使用

2,BLOB;5k;0-65k;

select * from t_team

2,添加CONSTRAINT

2,数据库是独立;

在where后边加group by 按什么类型分组与count联合使用

select ( select 列名 from表1) from 表1 ;

REFERENCES classes(class_id)

为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。

concat(要拼接的数据);

3、第三范式(3NF)

char(位数);固定长度的字符串 特定字符串长度(高达255字 符)

即实体中的某个属性不能有多个值或者不能有重复的属性。

从classes表中查询所有的class_name 插入到className表中的(class_name)字段

1、第一范式(1NF)

比如: 年纪,数量

insert into 新表名(新字段名) select 旧字段名 from 旧表名

2,浮点

5,concat();字符串拼接,一般很少在mysql上使用

2,数据库是用来管理,查询,储存数据的;

4,longblob;4g;0-4g;

3,特点;数据的更新和索引的更新是同步的

in() 只取()中的字符;(1,2,3)只能取123

2,在from后边添加子查询

INNODB;默认的

4,fk_表示外键;外键格式 foreign key;

cd ;dos窗口查看文件夹,盘与盘之间不需要cd

4,注意

user='root' and host='localhost'; 

6,注意

2,创建数据库;create database 库名 字符集;

2,BLOB;5k;0-65k;

数据表的引擎一般都要设成INNODB

5,删除表;

三,DDL;数据定义语句;设计语句

主键不能被修改,

数据表的引擎一般都要设成INNODB

select 列 from 表 where exsits (select 列 from 表1where 列=数据);

(在mysql中无效,支持创建但没有功能)

9,注意

1,数据库;

varchar(位数); 具有最大限制的可变长度的字符串 变量;

drop table 表名称

3,编码设置;

mysql --version;命令窗口查询mysql版本(管理员运行命令窗口)

2,在from后边添加子查询

afloat;4字节 单精度浮点型数据 存储小数数据

第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。

3,添加数据;

5,当前时间;select curtime();

2,删除年龄在18-20

3,分组

UPDATE 表名 SET 列1=新值1,列2=新值2 WHERE 过滤条件

实际字符串长度 (高达 255 字 符) 例如:名字,密码,短文标签

2,创建表;

MEDIUMBLOB;(存放2的24次方个字符);

3,添加数据;

UPDATE classes set class_name=null where class_id=3

6,子查询

4,外键命名规则

limit 1,3;limit 起始位置,截取长度。

net stop mysql;

delete from student where age>=18 and age<=20

5,外键名规则;FK_本表名_与之关联的表的名字

4,min();最小值;

3,删除外键

2,唯一约束(unique)指定的列非空的不能重复

where f_teamName="法国队"

4,指定数据(default)指定的数据可以更改;

bigint;8个字节;储存不能用smalint 或 int描述的超大整数。

删;先删从表在删主表

desc 表名称;

3,查看当前时间日期;select now();

3,not;非空

4,longblob;4g;0-4g;

(7), 改密码:update user set password=password("123") where user="root";

增;先增主表后增从表

REFERENCES classes(class_id)

新实体与原实体之间为一对多关系。在第一范式(1NF)

and;和

ip

3, 删除字段;

sybase 是sybase公司的;

7,链接查询查,

主键不能被修改,

mysqladmin -u用户名 -p旧密码 password 新密码 

1,修改某行的数据

1,增加对应数据;

desc 表名称;

class_id int,

2,as;取别名;mysq中as可以被省略

五,DCL;数据控制语句;控制

DELETE FROM t_student WHERE 年龄 BETWEEN 18 AND 20

需要和子查询的结果和某列的结果逐一比较后相等则打印

增;先增两表,在增中间表

timestamp;4字节;

(8), 刷新权限(必须步骤):flush privileges; 。 

索引是以文件形式存在的,索引过多文件会很大;

order by 列 desc;排序 desc降序,asc升序

bigint;8个字节;储存不能用smalint 或 int描述的超大整数。

or 或者

4,指定数据(default)指定的数据可以更改;

2、第二范式(2NF)

mysqladmin -u用户名 -p旧密码 password 新密码 

例如:科学数据

1,在select后边添加子查询

2,操作库

主键不能为不存在,

user='root' and host='localhost'; 

alter table 表名 add CONSTRAINT 外键名

(3,'王五',19,'女')

2,三张表查询例子(left join 表 on 外键拼接)

6,distinct;去掉重复位置,去重后不能和其他数据一起显示,

net start mysql;

即满足第二范式(2NF)必须先满足第一范式(1NF)。

主键非空唯一,

1,删除一行数据

(9), 退出 quit。 

2,如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,

char(位数);固定长度的字符串 特定字符串长度(高达255字 符)

1,两张表的数据;通过多张表共有的字段查找多张表共有的并集,

mysql笔记

2,删除索引;

limit 1,3;limit 起始位置,截取长度。

5,单表查询

即满足第二范式(2NF)必须先满足第一范式(1NF)。

alter table 表名称 rename 新表名称;

2,字段增删改;

2,数据库是用来管理,查询,储存数据的;

分组后也能过滤用having分组后再来筛选,where写在分组前,having写在分组后

3,编码设置;

1,添加要连的键

mysql笔记

主键不能为不存在,

1,表的增删改查

分组后也能过滤用having分组后再来筛选,where写在分组前,having写在分组后

删;先删中间表,再删两表

2,as;取别名;mysq中as可以被省略

net stop mysql;

1,增加对应数据;

smalint; 2个字节;存放-32000到 +32000范围的整数;

delete form 表名称 where id;

 from table1 a,table2 b, table3 c 

insert into classes values(null,'j139',"红瓦寺") 插入所有列,自增粘以null占位

varchar(位数); 具有最大限制的可变长度的字符串 变量;

text; 没有最大长度限制的可变长度Variable; (存放65535个字符)

2,排序(order by),asc;代表升序,desc;代表降序

一,补充

4,修改数据;

select * from 表名1,表名2 where 外键ID=主键ID and 某一行条的件;

七,数据库类型;

1,两张表的数据;通过多张表共有的字段查找多张表共有的并集,

is e;是

2,退出;exit

三,DDL;数据定义语句;设计语句

1,登录;mysql -h localhost -uroot -p

selsct count(*) from 表名 group by 分组的类型,按什么分组;

dbz 是IMB公司的

5,二进制大数据,二进制大对象

一,补充

alter table 表名称 change 旧字段名称 新字段名 类型;

3,非空约束(not null)指定的列不能为空;

保证每行所代表的实体能互相区别,不能存两条一抹一样的

int ;4个字节,存放-2000000000 到 +2000000000 范围的整数;

use 库名称;

select min(all 求哪一列的最小值) from 表名称

1,添加字段;

八,关系数据库的几种设计范式介绍

is e;是

create table student(表结构 类型,表结构 类型);

存储通常包含预定义字符串的变量 例如: 定期航线,国家或邮编

INSERT INTO t_student VALUES

(5),输入mysql回车,如果成功,将出现MySQL提示符 >。 

order by 列 desc;排序 desc降序,asc升序

class_id int,

1,sun();求和;

1,储存数据以及数据结构的厂库。(db);

select avg(all 求哪一列的平均值) from 表名称

4,主键的特性

(别忘了最后加分号) 。 

把查出来的结果当成一张表,再查这张表的数据;不常用,效率低

CONSTRAINT FK_student_classId FOREIGN key(class_id)

insert into 表名称(字段1,字段2........)values('j138',"红瓦寺".......)选择插入某些列;

(10), 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。

3,用UPDATE直接编辑user表

or 或者

只能查一列,多行;不常用,效率低

4,min();最小值;

(在mysql中无效,支持创建但没有功能)

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)

需要和子查询的结果和某列的结果逐一比较后相等则打印

set password for 用户名@localhost = password('新密码'); 

3, 删除字段;

3,medfumblob;16m;0-16m;

alter table 表名 add CONSTRAINT 外键名

1,查看数据库;show databases;

left join t_group on pk_teamid=fk_groupid

gb1312;中文

3,在where后边添加子查询

1,创建一个表,在表中外键字段与上一个关系表绑定

1,一个外键对应一个主键,外键和外键约束是分开的,

like 模式 格式;

2,逻辑比较

1,查两张表的数据;select * from 表1 left join 表2 on 外键ID=主键ID where 列="数据"

select 列 from 表 where exsits (select 列 from 表1where 列=数据);

要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

3,数据库种类;关系型,非关系型,层次型,网状型

decimal(m,b);用户自定义精度的浮点型数据 (m长度,b精度)以特别高的精度存储小数数据.

4,fk_表示外键;外键格式 foreign key;

mysql> use mysql; 

不满足第一范式(1NF)的数据库就不是关系数据库。所谓第一范式(1NF)

1,在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,

3,分组

索引是以文件形式存在的,索引过多文件会很大;

CONSTRAINT 外键名 FOREIGN key(要把外键给那个字段的字段名)

utf8;大型编码;

(9), 退出 quit。 

四,DML;数据操作语句;增删改

like “_”下划线代表单个字符

(4),再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),

3,not;非空

has a;生命周期,拥有,自己的

是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,

UPDATE classes set class_name=null where class_id=3

2,排序(order by),asc;代表升序,desc;代表降序

FOREIGN key(要把外键给那个字段的字段名)REFERENCES 关系表的表民(主键)

1,实体;表名,按照对象来划分

5,当前时间;select curtime();

1,储存数据以及数据结构的厂库。(db);

1,表的增删改查

6,auto_increment;主键自增长;

第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。

update 表名称 ste 字段名,字段名=值 where id;

FOREIGN key(class_id) REFERENCES classes(class_id)

2,属性;字段

七,数据库类型;

4,外键命名规则

4, 拷贝数据

4,索引的缺点;

alter table test add CONSTRAINT FK_TEST_CLASSID

tinyint;1个字节;存放128-127范围的整数;有符号

5,指定有效数据(check(第一个数据 or 第二个数据格式(健名=值)))

insert into classes values(null,'j139',"红瓦寺") 插入所有列,自增粘以null占位

4,当前日期;select curdate();

select 某列 from ( select 列名 from表1) ;

5,常用的一些数据库

CONSTRAINT 外键名 FOREIGN key(要把外键给那个字段的字段名)

alter table 表名 drop FOREIGN key 外键名

select max(all 求哪一列的最大值) from 表名称

只能查单行单列,用in时可以查单列多行,有 in 就有 not in

show tables;

删;外键在谁身上就先删谁;

9,关闭mysql后台服务(管理员运行命令窗口);

ip

enumcvall(a,b,c.......);列枚举-限定有限值

数据与索引的更新是同步的,如果全部数据都有索引就会降低效率;

show create table 表名称;

oracle,mysql,java都是oracle公司的

7,sql语句中也可以用true和flas,true表示1一般代表男,flas表示0一般代表女,是int型

3,pk_表示主键;主键约束 primary key

year;1字节;格式YYYY;范围1901-2155

sybase 是sybase公司的;

alter table student drop index 索引名称;

增;主键在谁身上就先增加谁;

tinyint;1个字节;存放128-127范围的整数;有符号

6,打印版本信息;select version();

byte ;+127——-128;127+1取返=-128;

六,DQL;数据查询语句;查

1,创建索引;

use e;使用,传进来的

6,修改表名称;

(1), 关闭正在运行的MySQL服务。 

例如:科学数据

分组后只能与与分组相关的结果级打印;

create index 索引名称 on 表名称(列名称,列名称.......);一个表可以有多个索引;

2,创建数据库;create database 库名 字符集;

(5),输入mysql回车,如果成功,将出现MySQL提示符 >。 

like “_”下划线代表单个字符

(2), 打开DOS窗口,转到mysqlbin目录。 

1,添加要连的键

6,修改表名称;

5,常用的一些数据库

alter table 表名 add 字段 类型

delete from student where age>=18 and age<=20

use e;使用,传进来的

alter table test drop FOREIGN key FK_TEST_CLASSID

3,多对多,需要新建中间表来保存对应关系表,外键咋中间关系表身上

2,属性;字段

left join t_player on pk_teamid=fk_teamid

2,操作库

date;3字节;格式YYYY-MM-DD;范围1000-01-9999-12-31

alter table 字段名称 add 定义列;

INSERT INTO t_student VALUES

转到mysqlbin目录。 

1,比较符号;

五,DCL;数据控制语句;控制

比如: 年纪

2、第二范式(2NF)

primark(第一个主键,第二个主键);

3,多对多,需要新建中间表来保存对应关系表,外键咋中间关系表身上

create table student(表结构 类型,表结构 类型);

3,max();最大值;

1,登录;mysql -h localhost -uroot -p

1、第一范式(1NF)

mysql --version;命令窗口查询mysql版本(管理员运行命令窗口)

select 列 from 表 where ID=数据 order by pk_playerid desc;

1,进入库;

between 下线 and 上线

比如: 年纪,数量

1,创建索引;

select 列 from 表 where 列=any (select 列 from 表1where 列=数据);

例如: 距离

1,在select后边添加子查询

(4),再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),

CONSTRAINT FK_student_classId FOREIGN key(class_id)

select sun(all 求哪一列的和) from 表名称

FOREIGN key(class_id) REFERENCES classes(class_id)

2,如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,

1,t_表示表名;字段 英文 field

2,外键必须链接主键(many2one)

insert into className(class_name) select class_name from classes

4,时间

select sun(all 求哪一列的和) from 表名称

select max(all 求哪一列的最大值) from 表名称

alter table test add class_id int

(6),连接权限数据库: use mysql; 。 

select 列 from 表 where 列=(select 列 from 表1 where 列=数据) ;

2,修改某列的某个数据

mysql> use mysql; 

4,mysql聚合函数

order by 排序的列 asc // 永远写在最后整个查询的最后

(3,'王五',19,'女')

1,is;是“是”的意思(is null)=是空

2,修改字段;

只要满足一个就可以打印,不能等于它本身

alter table test drop FOREIGN key FK_TEST_CLASSID

smalint; 2个字节;存放-32000到 +32000范围的整数;

create index 索引名称 on 表名称(列名称,列名称.......);一个表可以有多个索引;

not in() 不取()中的;not;非的意思

2,外键必须链接主键(many2one)

alter table 表名称 change 旧字段名称 新字段名 类型;

本文由美高梅网站是多少发布于美高梅-数据,转载请注明出处:数据表的基本操作【美高梅网站是多少】,MySq

上一篇:Server数据导入导出工具BCP详解,使用脚本输出e 下一篇:没有了
猜你喜欢
热门排行
精彩图文