mysql基礎一(純sql語句)

2021-08-26 14:51:13 字數 3841 閱讀 2368

資料庫知識是每個開發人員必備的技能之一,但是真正花時間去了解的就比較少了,大部分都是視覺化工具,簡單的sql語句,在工作中基本上夠用了,但是如果沒有視覺化工具,你對自己有多少的信心呢?反正我是好多都記不住(乙個完整的建立表的sql我都寫不下來,嗚嗚嗚),這一系列部落格,就簡單介紹下我們傳統的sql語句怎麼寫(主要也是增進一下自己對資料庫sql語句的認知)。所有的展示直接在虛擬機器上進行了,安裝mysql的過程就不展示了(是不是比較懶,哈哈哈)

官方給的標準建立資料庫的sql語法:

create  [if not exists] db_name

[create_specification] ...

create_specification:

[default] character set [=] charset_name

| [default] collate [=] collation_name

shcema和database是同義詞,都可以用來建立資料庫;如果db_name資料庫存在,你需要加上if not exists,不然會出錯,character set 指定資料庫編碼格式 

我們先來建立資料庫(建立資料庫並指定編碼格式為utf8):

create database if not exists db_test default character set utf8;
官方語法太多,貼出部分,感興趣的可以自行到官網檢視:

create [temporary] table [if not exists] tbl_name

(create_definition,...)

[table_options]

[partition_options]

我們來建立自己的測試表:

id int not null auto_increment primary key comment '主鍵'(列名:id,型別int,不能為null,自動遞增,主鍵,注釋為:主鍵)

create table if not exists t_test(id int not null auto_increment primary key comment '主鍵',name varchar(50) comment '姓名',age age tinyint comment '年齡');
我看網上有人說value和values執行順序有比較大的差別,value比較快,不知道可不可行,有想深入了解的就得自己找找資料了。

insert [low_priority | delayed | high_priority] [ignore]

[into] tbl_name

[partition (partition_name [, partition_name] ...)]

[(col_name [, col_name] ...)]

(value_list) [, (value_list)] ...

[on duplicate key update assignment_list]

insert [low_priority | delayed | high_priority] [ignore]

[into] tbl_name

[partition (partition_name [, partition_name] ...)]

set assignment_list

[on duplicate key update assignment_list]

insert [low_priority | high_priority] [ignore]

[into] tbl_name

[partition (partition_name [, partition_name] ...)]

[(col_name [, col_name] ...)]

select ...

[on duplicate key update assignment_list]

value:

value_list:

value [, value] ...

assignment:

col_name = value

assignment_list:

assignment [, assignment] ...

插入我們自己的資料:

insert into t_test(id,name,age) values(2,'wangwu',15) (3,'xiaohong',15);
select * from t_test;
我們多插入幾條資料之後(有重複的資料?現實中重名的也有啊,正常,哈哈):

如何刪除資料?delete就行了:

delete [low_priority] [quick] [ignore] from tbl_name

[partition (partition_name [, partition_name] ...)]

[where where_condition]

[order by ...]

[limit row_count]

刪除指定id的資料:

delete from t_test where id = 2;
現在有個需求是:刪除姓名為zhangsan並且年齡最大,如何辦?

有人說先把最大年齡查出來,再拿age做比較。這樣是可以做到,但是沒有發現多了一步操作嗎?

mysql> delete from t_test 

-> where age = (select max(age) from t_test where name='zhangsan');

當然還有別的方法,但是我說的是運用delete官方給的另一種方法。 我們可以仔細看下官方給的delete語句是什麼樣的?

order by...這不是排序嗎?limit row_count 這不是限定行數的嗎?是的,那麼上面那個需求我們可以怎麼做?

name為zhangsan的,按照age從大到小排序,limit限定刪除1行,是不是也是可以的?

delete from t_test where name='zhangsan' order by age desc limit 1;
update語句:

update [low_priority] [ignore] table_reference

set assignment_list

[where where_condition]

[order by ...]

[limit row_count]

value:

assignment:

col_name = value

assignment_list:

assignment [, assignment] ...

我們先來來吧wangwu的年齡改為20,修改多個字段英文的逗號(,)隔開就行

mysql> update t_test set age=20 where name='wangwu';

query ok, 1 row affected (0.01 sec)

rows matched: 1 changed: 1 warnings: 0

mysql使用基礎 sql語句 一

命令列輸入mysql u root p,回車再輸入密碼,進入mysql。終端命令以分號作為一條語句的結束,可分為多行輸入,只需在最後加上分號即可。如下圖 一 ddl 資料定義語言 data definition language 作用 定義資料庫或者表結構的。操作的物件 資料庫或表的結構的。關鍵字 ...

MySQL基礎sql語句總結(一)

mysql資料庫基礎知識點總結 一 資料庫 儲存有組織的資料的容器 主鍵 primary key 一一列 或一組列 其值能夠唯一區分表 中每個行。主鍵的最好習慣 除mysql強制實施的規則外,應該堅持的 幾個普遍認可的最好習慣為 不更新主鍵列中的值 不重用主鍵列的值 不在主鍵列中使用可能會更改的值。...

mysql基礎 基礎SQL語句

一,安裝mysql redhat6.5環境下,yum安裝 yum install y mysql 二,mysql登入 1,本地使用者登入 mysqladmin u root password 密碼 service mysqld restart mysql uroot p密碼 注意 p後無空格 或者 ...