1. 程式人生 > >MySQL基礎學習二

MySQL基礎學習二

efault 大於 con cnblogs 修改表 語句 lec affect color

一,數據庫操作

  主鍵

    主鍵是索引的一種,並且是唯一性索引,且必須定義為primary key。一個表只有一個主鍵,主鍵可以由多列組成。

    聲明主鍵的關鍵字為:primary key

簡單的一個聲明主鍵的示例:

create table score(sid int auto_increment primary key)engine=innodb default charset=utf8    
primary key為聲明的關鍵字。

  外鍵

    如果一個實體的某個字段指向另一個實體的主鍵,就稱為外鍵。

    被指向的實體,稱之為主實體(主表),也叫父實體(父表)。
    負責指向的實體,稱之為從實體(從表),也叫子實體(子表)。

  作用:用於約束處於關系內的實體。增加子表記錄的時候,是否有與之對應的父表記錄,如果主表沒有相關的記錄,從表不能插入。

外鍵示例代碼:

#創建被關聯的子表
create table class(cid int auto_increment primary key,clname char(20))engine=innodb default charset=utf8;
#插入數據
insert into class(clname) values("三年級"),("一年級"),("四年級"),("二年級");

#創建主表(父表)
create table student(sid int auto_increment primary
key,sname char(12), class_id int,constraint fk_id_class foreign key(class_id) references class(cid)) engine=innodb default charset=utf8; #constraint fk_id_class foreign key(class_id) references class(cid)關鍵詞,foreign key後跟父表列名,reference後加子表列名。 insert into student(sname,class_id) values("stu1"),("stu2"),("stu3");

外鍵變種:

外鍵與主鍵都有唯一索引,且都不能重復。區別就是主鍵不能為空,外鍵的唯一索引可以為空。

外鍵變種分為以下幾種關系:

一對多,一對一,多對多

1,一對一關系:

                create table userinfo1(
                    id int auto_increment primary key,
                    name char(10),
                    gender char(10),
                    email varchar(64)
                )engine=innodb default charset=utf8;

                create table admin(
                    id int not null auto_increment primary key,
                    username varchar(64) not null,
                    password VARCHAR(64) not null,
                    user_id int not null,
                    unique uq_u1 (user_id),#關鍵字,指定外鍵的一對一關系
                    CONSTRAINT fk_admin_u1 FOREIGN key (user_id) REFERENCES userinfo1(id)
                )engine=innodb default charset=utf8;

2,一對多關系

3,多對多關系

create table userinfo2(
                    id int auto_increment primary key,
                    name char(10),
                    gender char(10),
                    email varchar(64)
                )engine=innodb default charset=utf8;

                create table host(
                    id int auto_increment primary key,
                    hostname char(64)
                )engine=innodb default charset=utf8;


                create table user2host(
                    id int auto_increment primary key,
                    userid int not null,
                    hostid int not null,
                    unique uq_user_host (userid,hostid),#關鍵字,指定為多對多的關系語句
                    CONSTRAINT fk_u2h_user FOREIGN key (userid) REFERENCES userinfo2(id),
                    CONSTRAINT fk_u2h_host FOREIGN key (hostid) REFERENCES host(id)
                )engine=innodb default charset=utf8;

數據表的操作:

插入,修改,選擇,刪除數據:

   

#一次插入多條數據的方式:
insert into student(sname,class_id) values("stu1"),("stu2"),("stu3");

#修改表內數據
update student set sname="stu10"

#操作顯示表數據
select sid,sname from student;#顯示學生表的id與學生名字
select sid,sname from student where sid>3;顯示表中sid大於3,的學生id與姓名

#刪除表數據
delete from student where id=1;#刪除表中id為1的數據

  where條件語句

  where:條件限制語句,在數據操作中需要對數據進行按條件篩選,就需要用到where語句。在使用時徐註意:

      where函數條件後不允許加聚合函數條件

  語法: where 條件表達式

    條件表達式的運算符

技術分享

模糊匹配的關鍵字 like

模糊匹配補充 _下劃線 指的是該字符之後的一個任意數值,示例:where username like"a_"

自增數據操作

  在數據表的會經常設置自增數據,自增數據是可以對其進行修改查看等操作的。由於mysql的步長是基於會話操作的,每次修改針對的是每一個會話而不是全局,如果需要對全局進行修改要是global

  查看:

 show session variables like auto_inc%;
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
+--------------------------+-------+
2 rows in set, 1 warning (0.00 sec)

  修改自增步長:

 set session auto_increment_increment=2;
Query OK, 0 rows affected (0.00 sec)
 show session variables like auto_inc%;
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 2     |
| auto_increment_offset    | 1     |
+--------------------------+-------+
2 rows in set, 1 warning (0.00 sec)

全局查看:

全局查看是基於關鍵字global。

設置全局步長值:set global auto_increment_increment=2;

 show global variables like auto_inc%;
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
+--------------------------+-------+
2 rows in set, 1 warning (0.00 sec)

MySQL基礎學習二