(2006.11 更新)
以下に進む前に、SQLサーバ用のパスワードを受取ってください
SQLサーバに接続し、以下を行う。
演習室PCとは別の場所にあるSQLサーバにネットワークで接続し、サーバー上のデータベースで共同作業を行う。
osql -S www.cyteen.nagoya-bunri.ac.jp -U アカウント
(アカウントは学籍番号です)???????
の部分は自分の学籍番号を利用すること。create database db???????
(データベース作成)
go
use db???????
(データベース利用宣言)
go
create table t1 ( ID INTEGER, NAME char(12) )
(表作成)
go
insert into t1 values ( 番号, '名前' )
(レコード記録)番号は、自分の学籍番号・名前は自分の氏名とする。ただし氏名は漢字で6文字まで。名前には漢字を利用できる(Alt+半角全角キーで漢字入力ONとOFF切り替え)
insert into t1 values ( 123, 'aaa' )
go
select * from t1
(レコード表示)
go
update t1 set ID = 456 where ID = 123
go
use testdb
(testdbはこちらであらかじめ用意した共同作業用のデータベース)
go
insert into COLLECTION (NAME, COST, REMARKS) values ('品名', 価値, '学籍番号#説明')
品名:コレクション品の名前を10文字以内で記入「'」で囲むこと
価値:コレクション品の価値を数値で記入。半角文字で記入すること
説明:学籍番号#につづけてコレクション品の説明を10文字以内で記入
go
注)likeの検索パターン文字は規格どおりの%や_を使用する
select * from COLLECTION where REMARKS like '学籍番号%'
go
select * from COLLECTION where COST=
自分が記録した値段
go
select avg(cost) from COLLECTION
go
select name,cost from COLLECTION order by cost
go
select name + ltrim(cost) from collection
注)フィールド名などでは大文字小文字の区別はない。
文字列結合演算子は + を使用する。
異なる型どうしのフィールドの演算では型を変換して一致させる必要がある。
例) cast(フィールド as 型) 型変換関数
go
drop table COLLECTION
go
上記作業でSQLをgoで実行してエラーが起きなければ、goでSQLが実行されるたびに、サーバ側のデータベースに記録が完了される。(よって特にファイルを「保存」などの処置はしなくてよい)
・ データベース testdb の collection テーブルで、name と cost を結合して表示する。
※osql の画面上では、日本語文字列の文字の表示の幅は、全角=半角2文字に
換算されない。
よって、 select name,cost で表示しようとすると、桁ぞろえが正しく行われない。
cost の表示を桁数を揃えて表示する様に工夫する。
ヒント:
name + cast(cost as varchar)
で、文字列型に変換して name と結合
cost の左側に + 演算子で、 適当な長さの空白文字列" "を結合
"##########" + cast(cost as varchar)
right 関数で right(文字列, 長さ) を指定し、右側から、固定長で文字列を切り取る
最終的には、
select name + right( ?????? , ??)
の様な感じになる。
・ use db学籍番号
とし、再び、自分用のデータベースの使用を開始する。
create table mylist ( name varchar(20) , cost int)
で、テーブルを作成し、
insert into mylist (name , cost) select name, cost from testdb.dbo.collection where 適当な条件
で、自分のデータベースのテーブルにデータを取り込む
※ 条件に関して: mylistで指定した cost フィールドのデータ型は int で32bitの整数値が格納できます。
しかし、collectionテーブルのcostはこの範囲を超える値が格納されている為、cost に関して、適当な値以下のものだけinsertするようにしてください。
上記のSelect文で、 testdb.dbo.collection の部分は、 データベース名.所有者.テーブル名
の書式になっており、 testdbデータベース中の、dbo の、collectionテーブルを意味する。
・ mylist に update や delete を使用して、レコードの更新・削除の練習をする
testdbのcolllection表では、 update と deleteが禁止されていましたが、こちらのテーブルでは操作可能です。
試しに、レコードを修正・削除してみてください。