mysql データ型整合性制約 054
ユーザーを作成し、ユーザー権限を認可します。
# 1.ユーザーの作成: # ログインするには、ip 192.168.15.109 の fgf ユーザーを指定します create user ' fgf ' @ ' 192.168.15.109 ' identified by ' 12 ' ; #ログインするには、 ip 192.168.15.1のfgfユーザーを指定しますcreate user ' fgf ' @ ' 192.168.15.% 'は' 123 'で識別されます; # 任意の IP fgf ユーザーログインを指定しますcreate user ' fgf ' @ ' % 'は' 123 'で 識別されます; # 2 .ユーザーを削除します drop user'username ' @ ' IP address ' ; # 3 .ユーザーを変更します user'username ' @ ' IP address ' to ' new username ' @ ' IP address ' ; #4 。 パスワードを変更して「ユーザー名」 @ 「IP アドレス」のパスワードを設定します ' = password( '新しいパスワード' ); 現在のユーザーの権限管理 表示権限'ユーザー名' @ ' IP アドレス'の 許可を表示 # fgf ユーザーに db1.t1 ファイルのクエリ、挿入、および更新のみを許可するGrant select , insert , update on db1 to ' fgf ' @ ' % ' ; # root のみが使用できる Grantコマンド を除くすべての権限を示し、fgf ユーザーは db1 の下の t1 ファイルに対する任意の操作権限を持ち、 db1 .t1に対するすべての権限を' mjjに付与します。 ' @ ' % ' ; #fgf ユーザーは、db1 データベース内のファイルに対して任意の操作を実行し、 db1に対するすべての権限を付与します。 * to ' fgf ' @ ' % ' ; # fgf ユーザーは、すべてのデータベース ファイルに対して任意の操作を実行し、 *に対するすべての権限を付与します。* ' fgf ' @ ' % ' ; _
コピーテーブル
# テーブル構造をコピーし、レコードをコピーし ますcreate table t2 select * from db1.t1; # テーブル構造のみをコピーし、レコードはコピーしません create table t2 select * from db1.t1 where 1 > 3 ; create table t2 like db1.t1;
データ型: デフォルトでは整数が署名されます
データ型 符号なし (unsigned) および符号付き 0 によるゼロフィル
制約の役割: データの整合性と一貫性を確保すること
tinyint[-128~127] の小さな整数を両側から取得できます
整数
bigint 非常に大きな整数
# unsigned は 0 から始まり、負の数からは始まらないという意味を追加しました 。 create table t1(id int ( 4 ) unsigned,name char ( 20 ));
浮動小数点
float 単精度は、小数点以下の桁数が増えるにつれて精度が低くなります
float[(M,D)] [符号なし] [ゼロフィル]
パラメータの説明: 単精度浮動小数点数 (不正確な 10 進数値)、M は全長、D は小数点以下の数値、M の最大値は 255、D の最大値は 30
Double double precision は、小数の数が増えるにつれて不正確になりますが、float よりも正確です
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] 文字は float と同じ意味を持ちます。
10 進数 正確な 10 進数
10 進数 [(m[,d])] [符号なし] [ゼロフィル]
#パラメータの説明: 正確な 10 進数値、M は整数部分の合計数 (負の符号はカウントされません)、D は小数点以下の数値です。M の最大値は 65、D の最大値は 30 です。
#精度: **** 精度は、小数点以下の桁数が増えるにつれて常に正確になります ****
このタイプは正確な数値計算に必要です
Ecaimal が正確な値を保存できる理由は、内部的に文字列として保存されているためです。
日付タイプ: DATE TIME DATETIME TIMESTAMP YEAR
ユーザー登録時刻、記事公開時刻、従業員入店時刻、出生時刻、有効期限などを保存する役割です。
YEAR 年 (1901~2155)
日にち
TIME 時分秒
now() SQL 言語に付属するコンテンツ関数: 現在のイベント時刻を取得します (データ型に応じて)。
テーブル t10(born_year year,intClass datetime) を作成します。
文字タイプ
文字固定長、シンプルで失礼、スペースの無駄だがアクセス速度は速い
Varchar 可変長はスペースを正確に節約しますが、アクセス速度が遅くなります
length(): バイト数を表示
char_length(): 文字数を表示
列挙型とコレクション
create table Consumer( id int , name varchar ( 50 ), sex enum( ' Male ' , ' Female ' , ' other ' ) default ' Male ' , level enum( ' vip1 ' , ' vip2 ' , ' vip3 ' , ' vip4 ' ),#指定された範囲内で複数の お気に入りセットを選択してください( 'play ' , ' music ' , ' read ' , ' study ' ) # 指定範囲内で複数選択 );
注: ブール型を表すには SQL で tinyint(1) を使用してください。
整合性の制約
null ではなくデフォルトです
not nullを単独で設定した場合、null値を挿入できません
null が設定されておらず、default が指定されている場合、null 値を挿入でき、default が実行されます。
一意のキー
単一行の一意
create table t4( id int not null , name char ( 20 ) unique ); create table t4( id int not null , name char ( 20 ), unique (name) ); t4(id,name)値( 1 , ' alex ' ) に挿入します。 t4(id,name)値に挿入( 1 , ' ウシル' );
複数列一意 1つの列が同じである限り挿入できません(andと同様)
create table t5( id int , name char ( 20 ), unique (id), unique (name) );
すべてが同じである場合 (or と同様)、unique ユニオンは挿入できません。
create table t6( id int , name char ( 20 ), unique (id,name) );
応用シナリオ コース選択システム 一人の学生が複数のコースを選択可能 複数の学生がコースを選択可能
主キー
化学反応: null ではない + 固有
単一列の主キーは空にすることはできず、一意です
#主 キーインデックス (大量のデータの場合) クエリ速度が速くなります create table t7( id int Primary key , name varchar ( 10 ) unique ); create table t8( id int not null unique , name varchar ( 10 ) unique ) ;
結合された主キー
create table t9( id int , name varchar ( 10 ), 主 キー(id,name) );
auto_increment 制約: 制約されたフィールドは自動インクリメントです。 制約されたフィールドは同時にキーによって制約される必要があります。
create table Student( id int 主 キーauto_increment, name varchar ( 20 ) not null , sex enum( ' Male ' , ' Female ' ) default ' Male ' , ip varchar ( 20 ) unique ); 学生(名前、性別、IP)の値に挿入します ( 「アレックス」、「女性」, ' 127.0.0.5 ' ), ( ' wusir ' , '男性' , ' 173.45.32.1 ' );
テーブルをクリアして、削除と切り捨ての違いを区別します。
delete from t1 : 自己インクリメントする ID 情報がある場合でも、データは削除前の最後の ID 情報から始まります。
truncate table t1: 大量のデータを削除するのに適しており、以前のものよりも削除速度が速く、ゼロから直接開始されます。
外部キー
外部キーは 2 つのテーブルを関連付けます
# メインテーブルを作成します create table dep( # メインテーブルの ID は自動的に ID が増えるように設定されますint 主 キーauto_increment, # 部門名を単一列として設定します 一意の 名前char ( 10 ) unique , # 部門の説明を空にすることはできません dep_desc varchar ( 50 ) not null ); # スレーブテーブルを作成します create table emp( eid int 主 キーauto_increment, name char ( 10 ) not null , ageint not null 、 dep_id int 、 制約fk_dep外部 キー(dep_id)は、削除カスケード、更新カスケードのdep(id )を参照します。create table emp( eid int主キーauto_increment, name char ( 10 ) not null , age int not null , dep_id int , 制約fk_dep外部 キー(dep_id)はdep(id) を参照しますon delete cascade on update cascade , ); insert into dep(name,dep_desc)値 ( '取締役会' , '管理会社部門' ), ( '広報部門'、'広報管理部門' )、 ( ' IT 部門'、' IT 管理部門' )、 ( '財務部門' , '財務管理部' ); insert into emp(name,age,dep_id)値 ( 'アレックス' , 18 , 1 ), ( ' wusir ' , 30 , 2 ), ( '上司呉' , 20 , 3 ), ( '上司 Ma ' , 18 , 4 ), ( '上司秋' , 20 , 2 ), (「女神」、16、3 );