1. 程式人生 > >MySQL學習筆記(1)

MySQL學習筆記(1)

數據 word 創建用戶 -- 需要 rman 訪問 修改列 其他

mysql數據庫的內部存儲結構

技術分享圖片

數據庫操作語句

1.查看所有數據庫

1、查詢mysql服務軟件的所有數據倉庫     show databases;
2、查看mysql數據倉庫的編碼            show create database mysql;

nformation_schema數據庫:
其中保存著關於MySQL服務器所維護的所有其他數據庫的信息。如數據庫名,數據庫的表,表欄的數據類型與訪問權限等。
performance_schema 數據庫:
存儲引擎:命名PERFORMANCE_SCHEMA ,主要用於收集數據庫服務器性能參數。
mysql 數據庫:
mysql庫是系統庫,裏面保存有賬戶信息,權限信息,存儲過程,event,時區等信息。

test 數據庫:
這個是安裝時候創建的一個測試數據庫,和它的名字一樣,是一個完全的空數據庫,沒有任何表,可以刪除。

2.創建數據庫

1、創建一個名稱為mydb1的數據庫。             create database mydb1;
2、創建一個使用utf8字符集的mydb2數據庫。       create database mydb2 character set utf8;

3.刪除數據庫

需求:刪除前面創建的mydb1數據庫          drop database mydb1;

4.修改數據庫編碼集

需求:修改mydb2字符集為gbk               alter database mydb2 character set gbk;

5.切換數據庫和查看正在使用的數據庫

需求1:查看正在使用的數據庫              select database();
需求2: 切換數據庫                      use mydb2;

6.數據表結構的sql語句

【示例】
需求:創建一個員工表,員工表有工號、姓名、年齡、性別、生日。

Java 代碼編寫 :

class Employee {
    private int id;
    private String name;
    private int age;
    private char gender;
    private Date birthday;
}

MySql 創建數據表 : variable char 長度

create table employee (
    id int,
    name varchar(30),
    age int,
    gender varchar(10),
    birthday date
);

7.查看表 :

需求1 查看該數據庫的所有的表         show tables;
需求2: 查看建表語句以及字符集            show create table employee;
需求3: 查看表的列信息 (查看表結構)        desc emloyee;     description 描述

約束 :
意義:保證數據的有效性和完整性。可以確保數據庫滿足業務規則。

【示例】
需求:創建一個員工表,員工有工號、姓名、年齡、性別、生日和住址。
1、要求工號是主鍵並且設置主鍵自增長
2、姓名必須是唯一性的
3、年齡必須是非空的
4、地址必須是唯一的,並且非空。

create table emp (
    id int primary key auto_increment,
    name varchar(30) unique,
    age int not null,
    gender varchar(10),
    birthday date,
    address varchar(30) unique not null
);

數據表結構的修改
語法:alter table 表名 增/刪/改 列名 類型(長度) 約束; add/modify/drop/change/rename

需求1:在emp表上增加salary列     alter table emp add salary int;

需求1:修改name列的長度為20       alter table emp modify name varchar(20) unique;
需求2:修改birthday列不能為null      alter table emp modify birthday date not null;

需求:修改列名name為username        alter table emp change name username varchar(20) unique;

需求:刪除age列                   alter table emp drop age;

需求:將emp表名修改為emp2表       rename table emp to emp2;

需求7: 將employee的編碼修改成utf8      alter table employee character set utf8;

數據表的刪除
需求:刪除employee表 drop table employee;

數據記錄的增刪改
註意:我們需要再創建一張,建表語句如下:

create table user (
    id int primary key auto_increment,
    name varchar(20) unique,
    age int not null,
    gender varchar(10),
    birthday date,
    address varchar(50) unique not null
);

查看表中數據的指令 : select * from user;
insert 語句----數據記錄的增加

  1. insert into user(列1, 列2, 列3, 列4, 列5) values(值1, 值2, 值3, 值4, 值5); 所有列全部定義.
  2. insert into user(列1, 列2, 列3) values(值1, 值2, 值3); 部分列選擇定義
  3. insert into user values(值1, 值2, 值3, 值4, 值5); 省略列名, 值需要全部提供.

select * from user; 查詢表中的所有數據.

insert into user(id,name,age,gender,birthday,address) values(null,張三,18,male,1999-9-9,南京東路100號);

update 語句----修改表記錄
格式 : update 表名 set 列名 = 值 [where 條件];

需求 : 將所有人的年齡修改為20歲。                 update user set age = 20;

需求 : 將姓名為張三的人的年齡改為18歲。      update user set age = 18 where name = ‘張三’;

需求 : 將姓名為李四的人的年齡改為30,地址改為航都路18號     update user set age = 30, address = ‘航都路18號’ where name = ‘李四’;

需求 : 將王五的年齡在原基礎上增加2歲。       update user set age = age + 2 where name = 王五;

delete語句-----刪除表中數據的語句

格式 : delete from 表名 [where 條件];

需求 : 刪除表中名稱為’王五’的記錄。        delete from user where name = 王五;

需求 : 刪除年齡是30歲的員工。           delete from user where age = 30;

需求 : 刪除表中所有記錄。              delete from user;

Truncate 語句----刪除數據
刪除表記錄 : truncate table user; user表還在, 刪除的是user中的所有數據.

直接將 user 表刪除. 不是刪除表中的行記錄.
然後新建了一張和 user 表一模一樣的數據表.

說明1 : delete from 語句刪除是逐行依次刪除. (一條一條刪除的), 主鍵記錄依然存在.
說明2 : truncate table 直接將表刪除, 然後創建一張一模一樣的數據表. 主鍵從頭開始.

DCL 用戶操作 :
創建用戶 :
CREATE USER ‘用戶名‘@‘主機名‘ IDENTIFIED BY ‘密碼‘;

-- Jack 用戶只能在localhost這個IP登錄mysql服務器
CREATE USER ‘Jack‘@‘localhost‘ IDENTIFIED BY ‘123‘;
-- Rose 用戶可以在任何電腦上登錄mysql服務器
CREATE USER ‘Rose‘@‘%‘ IDENTIFIED BY ‘123‘;

授權用戶
GRANT 權限1, 權限2... ON 數據庫名.表名 TO ‘用戶名‘@‘主機名‘;

給 Jack 用戶分配對test這個數據庫操作的權限
GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON test.* TO ‘Jack‘@‘localhost‘;

給 Rose 用戶分配對所有 數據庫操作的權限
CREATE USER ‘Rose‘@‘%‘ IDENTIFIED BY ‘123‘;
GRANT ALL ON *.* TO ‘Rose‘@‘%‘;

查看權限 :
SHOW GRANTS FOR ‘用戶名‘@‘主機名‘;


查看 Jack 用戶的權限
SHOW GRANTS FOR ‘Jack‘@‘localhost‘;

撤銷權限 :
REVOKE 權限1, 權限2... ON 數據庫.表名 FROM ‘用戶名‘@‘主機名‘;

撤銷 Jack 用戶對test操作的權限
REVOKE ALL ON test.* FROM ‘Jack‘@‘localhost‘;

刪除用戶 :
DROP USER ‘用戶名‘@‘主機名‘;

刪除 Jack
DROP USER ‘Jack‘@‘localhost‘;

修改用戶名密碼 :

1.修改管理員密碼 :
mysqladmin -u root -p password 新密碼 -- 新密碼不需要加上引號

mysqladmin -u root -p password 123456
輸入老密碼

2.修改普通用戶密碼 :
set password for ‘用戶名‘@‘主機名‘ = password(‘新密碼‘);

set password for ‘Rose‘@‘%‘ = password(‘666666‘);

MySQL學習筆記(1)