当前位置: 澳门新濠3559 > 数据库 > 正文

1.为每个实体建立一张表,name (字段列表) values

时间:2019-12-27 19:58来源:数据库
1.为每个实体建立一张表,name (字段列表) values(值列表)。对此数据的操作大要可分为:创立、查询、删除、校勘、备份与回复(前4种简单称谓为“增加和删除改查”,也改成crud,即cre

1.为每个实体建立一张表,name (字段列表) values(值列表)。对此数据的操作大要可分为:创立、查询、删除、校勘、备份与回复(前4种简单称谓为“增加和删除改查”,也改成crud,即create/retrieve/update/delete)。

SQL Structured Query Language(构造化查询语句卡塔尔(英语:State of Qatar)

  1. 创办数据 之 insert:

包蕴了字段和笔录。
有八个数据表而结缘的库

    澳门新濠3559 1        

E-大切诺基图的营造步骤:
1.为各类实体建设布局一张表;
2.为各样表采取叁个主键;
3.充实外键以代表大器晚成对多的涉及;
4.创设新表表示多对多的涉嫌;
5.概念约束原则;
6.言三语四关系的品质进行改革;
7.为种种字段接收适当的数据类型和取值范围;

    ① 对富有字段进行赋值:

E-Highlander模型由实体、属性和事关3个基本要素构成。

     【方法一】insert into tb_name (字段列表卡塔尔(英语:State of Qatar) values(值列表卡塔尔(英语:State of Qatar);

意味着方法:

                  为具有字段赋值,能够省略字段列表,须要值的各样应该与表中字段的逐个后生可畏致!!

实体;矩形
属性:在矩形内部
关系:直线 1:1 、1:n 、n:n

     澳门新濠3559 2

主键:

      【方法二】insert into ex_stu set name='Lily',score='98'; (用逗号分隔就可以)

唯一性、

    ② 对有的字段進展赋值:

NO NULL.
Primary Key
<pi>Serial------>auto_increment

      【方法黄金时代】若只对里面包车型客车 name 进行赋值,

外键:表A中的两个字段a对应于表B的主键b,则字段a成为表A的外键。

     澳门新濠3559 3

约束;
1.主键节制(Primary Key):
2.外键节制(Foreign Key):
3.唯生龙活虎性限制(unique):
4.非空封锁(not Null):
5.反省约束(check):
6.暗中同意值限制(default):

      【方法二】 若只对内部有些字段进展赋值,则还可以使用 set 。

show databases; 查看数据库音信
show engines;查看存款和储蓄引擎音信
set table_type=InnoDB;设置当前暗中同意存款和储蓄引擎为InnoDB
show variables like 'table_type';
show create table table_name;
show variables like 'collation%'; 查看当前的字符序
set names gbk; 叁遍性设置character_set_client.character_set_connection和character—_set_results的字符集为gbk

                     insert into ex_stu set name='Lily'; 

 

      ③ 同期插入多条记下:

SQL脚本文件进行字符集的变动:文件后缀为.sql

        insert into ex_stu (name,score) values ('Molly','76'),('Bill','85');

set table_type=InnoDB;
show variable like 'table_type';
SET character_set_client = gbk;
SET character_set_connection = gbk;
SET character_set_database = gbk;
SET character_set_results = gbk;
SET character_set_server = gbk;
SET character_database = gbk_chinese_ci;
SET character_connection = gbk_chinese_ci;
SET character_server = gbk_chinese_ci;
show variables like 'character%';
show variables like 'collation%';

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在命令行中实践脚本文件: . C:wampwwwsqlinit.sql

      【思索】若插入数据时,产生了主键冲突会怎样?

数据库的管理:

                 如果本文所用的 ex_stu表安装了主键 id,这时候表中曾经有了 id=1的数量('lily',NULL),

 

                 若输入 insert into ex_stu values (1,'cici',65);

创设数据库:

                 会因为主键冲突,而插入战败。

create database database_name;

                 那时候能够将插入语句改为 insert into ex_stu values (1,'cici',65) on duplicate key update

选料当前操作的数据库:

                                                  name = 'cici',score='65';

use database_name;

                  mysql检测到发出了主键冲突,便会施行更新操作,将表中的id=1的记录更新为

展现数据库的布局:

                   1   cici  65

show create database database_name;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

剔除数据库:
drop database database_name;
数量库表的管理:
create table table_name{
column_name1 数据类型 [封锁标准]
.....
column_name(n卡塔尔(قطر‎ 数据类型 [自律原则]
}
去除当前表中的列 向当前已存在的表中增多列:
alter table table_name alter table table_name
drop column column_name; add column datatype 约束规范;
转移近日表中的column的datatype 1、修改列类型,例如列为nvarch类型,更正其尺寸为100:
alter table table_name
alter column column_name datatype ALTER TABLE tb ALTER COLUMN col nvarchar(100)

       ④ 插入的数据源:

2、扩张一列:

          【数据源之朝气蓬勃】能够应用 select 语句询问到的结果,作为 insert 的数据源。

ALTER TABLE tb ADD col2 nvarchar(100) null

1 insert into ex_stu (name , score) select name,score from ex_stu ;

1 insert into ex_stu (name,score) select t_name,c_name from class;

tip : select 语句可以使用其他数据表,即可以是如下情况(蠕虫复制)

表中设有数量时,新增的列必需为null只怕identity。

                    须求 字段个数、对应字段的格式意气风发致就可以。

3、扩大约束,设定列col3的缺省值为0:

                    须臾间能够将表的分寸提高一倍。

ALTER TABLE tb ADD CONSTRAINT DF_col3 DEFAULT 0 FOR col3
数据类型:
数值:
字符串:
日期:
外加属性:
NULL:
auto_increment:

           【数据源之二】能够从文件中导入,使用 infile 语句。

应用脚本文件实行数量库表的创制:
use student; 首先证明操作的数据库;
create table classes( 进行数据库表的创设;
class_id int auto_increment primary key, 表中的属性名 类型 约束条件
class_no char(10) not NULL unique,
class_name char(20) not NULL
);
澳门新濠3559,来得数据库表的结构:
show tables; 查看当前操作数据库中保有表名;
describe table_name; 查看classes表的表构造;
show create table table_name; 查看成立表名叫table_name的创始语句,进而查看表布局
删除数据库表:
drop table table_name;

                               load data infile 文件路线 into table tb_name ;

表记录的翻新操作:
添加:
insert into table_name [(字段列表卡塔尔] values(值列表);
insert into classes(class_in,class_no,class_name) values(NULL,'10chinese','10中文');
insert into classes values(NULL,'10chinese','10中文'卡塔尔(قطر‎; 当向表中持有列增多数据时,字段列表能够总结;
修改:
update table_name;
set column_name = new_value[,next_column = new_value2····]
[where 条件表明式]
update student set student='张三丰' where student_id=1;
update score set grade=grade-5;
update score set grade=grade+10 where student_id=1 and courses_id=2;
删除:
delete from table_name
[where 条件表达式];
delete form score where student_id=1 and course_id=2;
查询:
select 字段列表 * :字段列表为数据源的全部字段。
表名.* :多表查询时,钦点有些表的全部字段。
字段列表 :钦赐所须求展现的列。
form 数据源
[where 过滤条件]
[group by 分组表明式]
[having 分组过滤条件]
[order by 排序表明式[asc|desc]];

1 load data infile 'e:/amp/seven' into table teacher;
2 // 相当于将该路径下的文件内容导入表 teacher 中

select 字段列表
form 数据源
limit [start,end]length; start 的值默认为0; top 2 top 50 percent
select * from score limit 0,3; 查询score表的前3条记录。
等效于:select * from score limit 3;

                               其相应的文件导出命令为:  select * into outfile 文件路线 from tb_name;

select * from score where grade>80;
select * from score order by grade desc;
select sum(grade) from score where course_id=1; 使用聚合函数重回汇总值;
sum()/avg()/count()/max()/min()

                               tip :导入时,涉及到数量扩充,必要思索是或不是存在冲突的情形。

特殊字符的转义使用反斜线符号''开头

                                     平时,能够在导出时,将主键设置为null,利用 auto_increment 的特征,产生新的主键。

how to create INDEX in a table?
how to alter the datatype of a table's column?
how create a view?
what is the view?

       ⑤ 关于私下认可值:

           对表的 score 字段设置暗许值,设置为80:

           澳门新濠3559 4

           利用私下认可值字段:能够平素写 default , 也足以写成 default(字段名卡塔尔。

           澳门新濠3559 5


成立数据 之 replace:

【案例】对于下表,主键为 id ,

           那时,若计划插入 id=1 的新数据,会时有产生主键冲突,以致插入错误。

           那时可以思量接收 replace 语句:  replace into tb_name (字段列表) values (值列表);

           效果也就是 更新了本来的数目。


  1. 询问数据: select 字段列表 from tb_name 查询条件;

   ①询问全体字段                                       ② 查询部分字段                                            ③查询七个字段

      澳门新濠3559 6                   澳门新濠3559 7                 澳门新濠3559 8

   tip:查询条件得以简轻松单,表示具有的记录都获得,约等于where 1

      澳门新濠3559 9

 ④ 查询满意一定标准的数据:

    澳门新濠3559 10 

    tip:这时由此询问条件来筛选(早先是where 1,以往改为where score>=90)


 select * into outfile 文件地点from ...:能够将追寻到的数量,保存到服务器的文件内。

   该意义能够自动创立文件,不过不能创立文件夹。

    文件地方格式: 'e:/mysql/one'

     此中,one文件可以由该语句创设出来,但无法是原来就有文件。

    生成的文件格式:

     私下认可的,通过行来差异记录,制表符来区分字段。(但足以更正)

     为了满足某种特意的须要,会采纳不一致的细分情势,如cvs。

     通过如下的选项:

     田野同志s:设置字段选项; 田野(field卡塔尔国s terminated by 't' enclosed by '' escaped by '\'

     lines:设置行选项(记录选项); lines terminated by 'n' starting by ''

    【例外】经常具备的笔录都通过行来体现,但保留二进制数据分化:


  1. 去除数据  : delete from tb_name 条件;

    【允许行使条件】① 删除相符条件的多少;

1 delete from ex_stu where score<90;  // 删除分数低于90分的记录

        ② 允许行使 limit , 调整删除的记录数(不常同盟order by 来接受)。

1 delete from ex_stu limit 3;   // 删除前3条记录
  delete from ex_stu order by score limit 3 ; // 先按照 score 进行升序排序,再删除前3条记录

       ③ 允许连接删除: 允许选用join 语法,同不时候删除四个表内

1 delete from one,two using one join two on one.public_field=two.public_field where one_id = 2 ;

         // 从表 one 和 two 中,删除数据。

      // 待删除的多少是两表联合后的结果中,两表的 public_田野(field卡塔尔国相等的数量,而且要知足 one_id = 2。

      // 实行完以往,会发觉两表中对应的多少都曾经去除了。


删去数据 之 truncate (肖似 delete from table,会清空表中的全部音讯卡塔尔国

tip : delete from tb_name(逐行删除),并不影响auto_increment 的计数,它依旧会在原来的根基上积攒。

       truncate tb_name;会重建 auto_increment 的主键,它会再度领头计数。


 4. 改造数据:update tb_name set 字段=新值,.... 条件;

        将持有分数在90分以上的学习者的分数都改成了100分:

     澳门新濠3559 11   

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 多表更新:

1 update one join two on one.public_field = two.field set one_data='x',two_data='y' where one_id=3;

// 先将基于 one.public_field = two.public_田野 那大器晚成法则,将两表合併。

// 将大表中,满意one_id=3的数据中的 one_data 和 two_data 分别更新为 'x' 和 'y' 。



  1. 备份/还原(将数据一次性导出、导入)

    【方案一】适用于 myisam 表。

                  直接将tb_name.frm , tb_name.myd , tb_name.myi几个公文物珍惜留、备份就可以。

             须求的时候,直接解压、移动到相应的数据库目录内就能够。

             tip : 假如是用同生龙活虎措施,管理innodb 布局的公文,则利用 show table 时,可检查测量试验到备份是不成功的。

   【方案二】通用的方案:将建表布局与插入数据的 SQL 语句生成,并保留。

                      下一次若供给该组织和多少,直接将数据书上说话试行就能够。

编辑:数据库 本文来源:1.为每个实体建立一张表,name (字段列表) values

关键词: